【发布时间】:2020-10-09 18:02:13
【问题描述】:
所以我在阅读文本文件时遇到了麻烦。我对代码很陌生,我希望我的代码能够读取简单的 .txt 文件并存储一些内容:人名、时间(姓名后的 nr)等等。
我的 txt 文件格式如下:
txt file
我需要存储一个人的姓名,该姓名位于 "." 之后和 ":" 符号之前:
- 佩德罗·门德斯:45
例如,在这一行中,我需要存储“Pedro Mendes”。
我的代码不能正常工作:
FILE *f;
f = fopen(filename,"rt");
if(f==NULL){
printf("Erro no acesso ao ficheiro.\n");
return NULL;
}
(...)
while(fgetc(f) != '.'); // finds the point
fscanf(f," %s %s",pnome,unome); //saves the name of a person
while(fgetc(f) != ':');
fscanf(f,"%d",&tempo);
我应该得到"Pedro Mendes",但我有"Pedro Mendes:",暂时我应该得到45,但我有46(我相信是从下一行读取)。
如果有人有很好的答案,谢谢。
【问题讨论】:
-
也许(在找到
'.'之后)if(fscanf(f, "%s %[^:]:%d", pnome, unome, &tempo) == 3) { /* success */ }尽管 IMO 最好用fgets阅读每一行并进行分析。 -
感谢您的回答。它有效!