Ciao
在下面查看我的代码。 那是登录身份验证的标准程序。 在文件“ Login.txt”中,包含1个带有用户名的字符串。 程序启动时,要求输入用户名,然后将此字符串与“ Login.txt”中保存的字符串进行比较,如果两者相等,则为-成功,如果不相等,则我们只能尝试3次,直到程序结束; 我需要在“ Login.txt”中保存3个字符串(用户名),例如: 布拉德 大卫 彼得
因此,我需要分别将“ Login.txt”中的每个字符串分别调用到char buf [],然后再调用strcmp来调用scanf函数(例如,David),因此,两个字符串都应相等其他;
问题: 如何“分离地”提取多个字符串并将每个字符串从C FILE .txt中的单个文件放入不同的char buf []?
谢谢。
代码:
int main() {
system("cls");
FILE *p;
int n=3,b,v;
char buf[20],buf2[20],Login[20],Password[20];
p=fopen("Login.txt","rt");
fgets(buf,20,p);
fclose(p);
p=fopen("Password.txt","rt");
fgets(buf2,20,p);
fclose(p);
printf("%s",buf);
do {
printf("Please Log in. You have %d tries\n",n);
printf("Enter your Login\n");
scanf("%s",Login);
printf("\nEnter your Password\n");
scanf("%s",Password);
printf("\nCompare Login = %d Compare Login = %d\n",strcmp(buf,Login),strcmp(buf2,Password));
n--;
b=strcmp(buf,Login);
v=strcmp(buf2,Password);
if (v==0&&b==0){
printf("\nYou logged in\n\n");
break;
}
else if (n==0) {
printf("\nYou failed\n\n");
}
}
while (n!=0);
}
答案 0 :(得分:1)
听起来像您在问如何从同一文件中同时获取用户名和密码。是吗?
为了从单个字符串(buf
)中提取用户名和密码,您需要使用delimiter来分隔它们。假设Login.txt
看起来像这样:
MyUsername1
MyPassword1
MyUsername2
MyPassword2
在这种情况下,delimiter是行尾字符(在Windows上是\r\n
)。
您需要使用strtok或strsep(请参阅an example)将存储在buf
中的字符串分开。
您需要进行一些学习才能弄清楚该如何做。如果我只为您键入一个功能齐全的程序,您将不会学到任何东西。所以我不会那样做。