目前我正在学习C. 从文件中读取反正切正题:Ç如何使用sscanf的正确支持
文本文件的内容:
123456 James Doakes; 0
987987 Dexter Morgan; 0
010203 Masuka Perv; 0
int main()
{
char accountNr[ACCOUNTNRSIZE], ownerName[NAMESIZE], enter[3];
int accountBalance = 0;
char filename[] = "breg.txt";
FILE *file = fopen(filename, "r");
if (file != NULL) {
char line[128];
while (fgets(line, sizeof(line), file) != NULL) {
sscanf(line, "%s %[^;] %d ", accountNr, ownerName, &accountBalance);
printf("%s", ownerName);
//fflushstdin();
}
fclose(file);
} else {
perror(filename);
}
return 0;
}
我写这个来检查例如James Doakes的名字是否正确注册:
printf("%s", ownerName);
但是,当它打印出来就像标准输出仍然是活动的,我可以推动回车,它会再次输入名称。我的目标当然是能够将数字,全名和最后一个数字作为单独变量进行扫描。但它显然不起作用。我猜测\ n也会被注册。不知道,我只是在猜测。
我在做什么错?为什么?我该如何解决这个问题?
非常感谢, 米夫
尝试'sscanf(line,“%s%[^;];%d”,accountNr,ownerName,&accountBalance);'或检查其返回值,int r = sscanf(line,“%s%[^ ;];%d“,accountNr,ownerName,&accountBalance);如果(r == 3)/ * accountNr,ownerName和accountBalance扫描成功*/else if(r == 2)/ * aaccountNr和ownerName扫描成功*/else if(r == 1)/ * aaccountNr扫描成功* /其他/ *没有扫描成功:(* /' –
当打印ownerName:'printf(“%s \ n”,ownerName)时还要添加一个''n'';' – chqrlie