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() 関数は、登録、ログイン、またはプログラムの終了を選択できる簡単なメニューを提供します。

bannerAds