如何从C中的单个文件中提取多个字符串

时间:2018-07-02 19:40:04

标签: c

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);
}

1 个答案:

答案 0 :(得分:1)

听起来像您在问如何从同一文件中同时获取用户名和密码。是吗?

为了从单个字符串(buf)中提取用户名和密码,您需要使用delimiter来分隔它们。假设Login.txt看起来像这样:

MyUsername1
MyPassword1
MyUsername2
MyPassword2

在这种情况下,delimiter是行尾字符(在Windows上是\r\n)。

您需要使用strtokstrsep(请参阅an example)将存储在buf中的字符串分开。

您需要进行一些学习才能弄清楚该如何做。如果我只为您键入一个功能齐全的程序,您将不会学到任何东西。所以我不会那样做。