#include <stdio.h>
#include <string.h>
#define MAX_USERS 10
#define MAX_USERNAME_LENGTH 20
#define MAX_PASSWORD_LENGTH 20
struct User {
char username[MAX_USERNAME_LENGTH];
char password[MAX_PASSWORD_LENGTH];
};
struct User users[MAX_USERS];
int numUsers = 0;
int registerUser(char username[], char password[]) {
if (numUsers >= MAX_USERS) {
printf("Cannot register more users. Maximum limit reached.\n"); return 0;
}
// Check if username already exists
for (int i = 0; i < numUsers; i++) {
if (strcmp(users
[i
].
username, username
) == 0) { printf("Username already exists. Please choose a different username.\n"); return 0;
}
}
// Add user
strcpy(users
[numUsers
].
username, username
); strcpy(users
[numUsers
].
password, password
); numUsers++;
printf("User registered successfully.\n"); return 1;
}
int loginUser(char username[], char password[]) {
for (int i = 0; i < numUsers; i++) {
if (strcmp(users
[i
].
username, username
) == 0 && strcmp(users
[i
].
password, password
) == 0) { printf("Login successful. Welcome, %s!\n", username
); return 1;
}
}
printf("Invalid username or password. Please try again.\n"); return 0;
}
int main() {
// Example usage
registerUser("user1", "password123");
registerUser("user2", "abc456");
loginUser("user1", "password123"); // Successful login
loginUser("user2", "wrongpass"); // Unsuccessful login
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgTUFYX1VTRVJTIDEwCiNkZWZpbmUgTUFYX1VTRVJOQU1FX0xFTkdUSCAyMAojZGVmaW5lIE1BWF9QQVNTV09SRF9MRU5HVEggMjAKCnN0cnVjdCBVc2VyIHsKICAgIGNoYXIgdXNlcm5hbWVbTUFYX1VTRVJOQU1FX0xFTkdUSF07CiAgICBjaGFyIHBhc3N3b3JkW01BWF9QQVNTV09SRF9MRU5HVEhdOwp9OwoKc3RydWN0IFVzZXIgdXNlcnNbTUFYX1VTRVJTXTsKaW50IG51bVVzZXJzID0gMDsKCmludCByZWdpc3RlclVzZXIoY2hhciB1c2VybmFtZVtdLCBjaGFyIHBhc3N3b3JkW10pIHsKICAgIGlmIChudW1Vc2VycyA+PSBNQVhfVVNFUlMpIHsKICAgICAgICBwcmludGYoIkNhbm5vdCByZWdpc3RlciBtb3JlIHVzZXJzLiBNYXhpbXVtIGxpbWl0IHJlYWNoZWQuXG4iKTsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAvLyBDaGVjayBpZiB1c2VybmFtZSBhbHJlYWR5IGV4aXN0cwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Vc2VyczsgaSsrKSB7CiAgICAgICAgaWYgKHN0cmNtcCh1c2Vyc1tpXS51c2VybmFtZSwgdXNlcm5hbWUpID09IDApIHsKICAgICAgICAgICAgcHJpbnRmKCJVc2VybmFtZSBhbHJlYWR5IGV4aXN0cy4gUGxlYXNlIGNob29zZSBhIGRpZmZlcmVudCB1c2VybmFtZS5cbiIpOwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICB9CgogICAgLy8gQWRkIHVzZXIKICAgIHN0cmNweSh1c2Vyc1tudW1Vc2Vyc10udXNlcm5hbWUsIHVzZXJuYW1lKTsKICAgIHN0cmNweSh1c2Vyc1tudW1Vc2Vyc10ucGFzc3dvcmQsIHBhc3N3b3JkKTsKICAgIG51bVVzZXJzKys7CiAgICBwcmludGYoIlVzZXIgcmVnaXN0ZXJlZCBzdWNjZXNzZnVsbHkuXG4iKTsKICAgIHJldHVybiAxOwp9CgppbnQgbG9naW5Vc2VyKGNoYXIgdXNlcm5hbWVbXSwgY2hhciBwYXNzd29yZFtdKSB7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVVzZXJzOyBpKyspIHsKICAgICAgICBpZiAoc3RyY21wKHVzZXJzW2ldLnVzZXJuYW1lLCB1c2VybmFtZSkgPT0gMCAmJiBzdHJjbXAodXNlcnNbaV0ucGFzc3dvcmQsIHBhc3N3b3JkKSA9PSAwKSB7CiAgICAgICAgICAgIHByaW50ZigiTG9naW4gc3VjY2Vzc2Z1bC4gV2VsY29tZSwgJXMhXG4iLCB1c2VybmFtZSk7CiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgIH0KICAgIHByaW50ZigiSW52YWxpZCB1c2VybmFtZSBvciBwYXNzd29yZC4gUGxlYXNlIHRyeSBhZ2Fpbi5cbiIpOwogICAgcmV0dXJuIDA7Cn0KCmludCBtYWluKCkgewogICAgLy8gRXhhbXBsZSB1c2FnZQogICAgcmVnaXN0ZXJVc2VyKCJ1c2VyMSIsICJwYXNzd29yZDEyMyIpOwogICAgcmVnaXN0ZXJVc2VyKCJ1c2VyMiIsICJhYmM0NTYiKTsKCiAgICBsb2dpblVzZXIoInVzZXIxIiwgInBhc3N3b3JkMTIzIik7IC8vIFN1Y2Nlc3NmdWwgbG9naW4KICAgIGxvZ2luVXNlcigidXNlcjIiLCAid3JvbmdwYXNzIik7ICAvLyBVbnN1Y2Nlc3NmdWwgbG9naW4KCiAgICByZXR1cm4gMDsKfQo=