我正试图扫描以下信息:
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"
。