我有一个包含以下信息的文本文件。每条记录的大小都是200Bytes,但它通常使用的小于200B,因为你可以看到每条记录后有一些空格使它成为200B。我的问题是我需要以非常少的搜索量来解决这个问题,并阅读我能得到的最多信息。所以我想用下面的内容阅读这个文件:
char auxStr[50];
fscanf(f,"%[^\n]s|",auxStr); // HERE IS THE PROBLEM, IT DOES NOT WORK
p->nome = (char*) malloc(sizeof(char)*strlen(auxStr)+1);
strcpy(p->nome,auxStr);
printf(" %s\n\n", p->nome);
我希望 auxStr 具有空白“St Charles,961”这个值,是否可以使用像fscanf这样的c函数来完成它或者我必须使用循环并读取每个字符,直到我找到分隔符“|”?
Ps:使用循环将解决问题,但我相信它将使用尽可能多的搜索。我想我不能使用fgets因为我不知道要读取的字符串的长度。
文字档案:
85 82|AAAA|BBBB|St Charles,961|Sao Carlos|Sao Paulo|13560-0520|-1|-------------------------
|8585|FFFFFF|RRR| RUA Y, 888|Rio de janeiro|585996-988|-1|---------------------------------
|98 85|ZZZZ|YYYY|AV YYY,889|SP|949845-45354|-23|-----------------------------------------------
答案 0 :(得分:0)
这是建议从一行读取所有字段。
char field1[50];
char field2[50];
char field3[50];
char field4[50];
char field5[50];
char field6[50];
char field7[50];
char field8[50];
fscanf(f, "%[^|]s|%[^|]s|%[^|]s|%[^|]s|%[^|]s|%[^|]s|%[^|]s|%[^|]s|",
field1, field2, field3, field4,
field5, field6, field7, field8);