我正试图扫描以下信息:

00abcabc:abc123
01defdef:def456
02hijhij:hij789

使用此代码分成两个数组:
FILE *dataLogin;

int i=0, numRecords;
char username[100][10], password[100][10];

dataLogin = fopen("login.dat", "r");

if (dataLogin == NULL){printf("Error");}

else {

    while (fscanf(dataLogin, "%s:%s\n", username[i], password[i])){i++;}

    fclose(dataLogin);

    numRecords = i;

    for(i = 0; i < numRecords; i++){printf("%s, %s\n", username[i], password[i]);}

    }

printf("complete");

程序编译并运行,但不显示任何内容。我相信我已经将故障隔离到while循环,但是我被困在那里了。谢谢!

最佳答案

试用:

while (fscanf(dataLogin, "%[^:]:%s\n", username[i], password[i]) == 2){i++;}

scanf返回红色字段的数目,因此在文件结束之前它是2。您还需要将"%s:%s\n"更改为"%[^:]:%s\n"

10-08 07:59