どのように C 言語のシステムユーザ名を重複させずに設定できるのか
システムのユーザー名を重複させないようにするには、C 言語で次の方法を使用します。
- 構造体配列を使う:ユーザ名やパスワードなどの情報を格納する構造体を作成し、配列を作る。ユーザ登録時には、配列を順番に走査し、ユーザ名が既にあるかどうか調べる。既にある場合は、ユーザにユーザ名を変更してもらうよう促す。既になければ、配列に新しいユーザ情報を追加する。
#include <stdio.h>
#include <string.h>
#define MAX_USERS 100
struct User {
char username[20];
char password[20];
};
int main() {
struct User users[MAX_USERS];
int numUsers = 0;
// 注册新用户
printf("请输入用户名:");
char newUsername[20];
scanf("%s", newUsername);
for (int i = 0; i < numUsers; i++) {
if (strcmp(users[i].username, newUsername) == 0) {
printf("用户名已存在,请重新选择。\n");
return 0;
}
}
strcpy(users[numUsers].username, newUsername);
// 输入密码等其他信息...
numUsers++;
return 0;
}
- 連結リストを使用する: ユーザー名やパスワードなどの情報を保持する連結リストを作成します。ユーザー登録時には、連結リストを走査して同一のユーザー名が既にあるかをチェックします。既にある場合は、ユーザーにユーザー名を再選択するように促します。存在しない場合は、新しいノードを作成し、ユーザー情報を連結リストに追加します。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct User {
char username[20];
char password[20];
struct User* next;
};
int main() {
struct User* head = NULL;
struct User* curr = NULL;
// 注册新用户
printf("请输入用户名:");
char newUsername[20];
scanf("%s", newUsername);
curr = head;
while (curr != NULL) {
if (strcmp(curr->username, newUsername) == 0) {
printf("用户名已存在,请重新选择。\n");
return 0;
}
curr = curr->next;
}
struct User* newUser = (struct User*)malloc(sizeof(struct User));
strcpy(newUser->username, newUsername);
// 输入密码等其他信息...
newUser->next = head;
head = newUser;
return 0;
}
ユーザー情報を保存するには配列かリストのデータ構造を使用し、ユーザー名の重複をチェックするためにループして確認します。実用的な要件に応じて、適切なデータ構造を選択してユーザー情報を保存して管理します。