C言語で登録・ログイン機能を記述する方法
ユーザ登録情報をファイル操作で保存し、ログイン時の認証機能を実装したC言語による簡単な登録・ログイン機能コード例を以下に示します。
#include <stdio.h>
#include <string.h>
#define MAX_USERS 100
#define MAX_USERNAME 20
#define MAX_PASSWORD 20
typedef struct {
char username[MAX_USERNAME];
char password[MAX_PASSWORD];
} User;
User users[MAX_USERS];
int numUsers = 0;
// 注册函数
void registerUser() {
if (numUsers >= MAX_USERS) {
printf("用户数量已达上限\n");
return;
}
User newUser;
printf("请输入用户名:");
scanf("%s", newUser.username);
printf("请输入密码:");
scanf("%s", newUser.password);
// 检查用户名是否已存在
for (int i = 0; i < numUsers; i++) {
if (strcmp(users[i].username, newUser.username) == 0) {
printf("该用户名已存在\n");
return;
}
}
// 添加新用户
users[numUsers] = newUser;
numUsers++;
printf("注册成功\n");
}
// 登录函数
void loginUser() {
char username[MAX_USERNAME];
char password[MAX_PASSWORD];
printf("请输入用户名:");
scanf("%s", username);
printf("请输入密码:");
scanf("%s", password);
// 验证登录信息
for (int i = 0; i < numUsers; i++) {
if (strcmp(users[i].username, username) == 0 && strcmp(users[i].password, password) == 0) {
printf("登录成功\n");
return;
}
}
printf("用户名或密码错误\n");
}
int main() {
while (1) {
int choice;
printf("1. 注册\n");
printf("2. 登录\n");
printf("3. 退出\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
registerUser();
break;
case 2:
loginUser();
break;
case 3:
return 0;
default:
printf("无效的选择\n");
break;
}
}
}
このコードでは、グローバル配列の users を使用して登録ユーザーの情報を格納し、numUsers には現在登録しているユーザー数を記録します。registerUser() 関数は、新しいユーザーの登録に使用され、ユーザー名が既に存在するかどうかを確認し、存在しない場合は新しいユーザーを配列に追加します。loginUser() 関数は、ユーザーのログイン情報を検証するために使用され、配列内のユーザー情報を反復処理し、ユーザー名とパスワードが一致するかどうかを確認します。main() 関数は、登録、ログイン、またはプログラムの終了を選択できる簡単なメニューを提供します。