我想使用.txt
从sscanf
文件中读取所有数字。在主要功能中,我用.txt
打开了fopen( name.txt, "r")
文件。以下代码仅读取第一个字符串和第一个数字,但我无法对其进行迭代:
int test(FILE *file){
int l = 0;
char buffer[256];
char *poi = NULL;
while(fgets(buffer, 256, file) != NULL){
poi = buffer;
for(;*poi != '\n'; poi++){
sscanf(buffer, "%[^0-9]%d", zahl[l].buf, &zahl[l].number);
l++;
}
}
例如:
.txt
文件中的以下文本:
In 2019 we had 200 accidents
In 2020 we had 199 accidents
上面的代码只能读取2019和2020,而不能读取200或199-我如何告诉sscanf
继续扫描直到出现新行'\n'
?
几件事:
buffer
的开头进行扫描,需要从poi
进行扫描(兴趣点?)poi
提前读取的字符数buffer
中可能不存在换行符>第二点,您可以使用%n
获取到目前为止读取的字符数。
这样,您就可以像这样结束循环:
while (*poi) {
int nc;
if (2 == sscanf(poi, "%[^0-9]%d%n", zahl[l].buf, &zahl[l].number, &nc))
poi += nc;
else
break;
l++;
}