我正在尝试读取包含多行以下形式的文件:
www.someurl.com,timestamp
我正在使用以下代码:
char url[256];
unsigned int timestamp;
// Read each line from the input file.
while(fscanf(inputfile, "%s,%d", url, ×tamp) == 2) {
printf("%s was visited at %d\n", url, timestamp);
}
但是,fscanf
将整行扫描成字符串,而不会将时间戳扫描成整数。我确定这是一个非常基本的错误,但我无法弄清楚。谁能解释这是为什么,我该如何解决?
最佳答案
当处理 %s
时,fscanf
需要一个以空格结尾的字符串,它也是贪心的。所以整行都被读入了 url。
可以直接指定禁止使用的字符集:
fscanf(inputfile, "%[^,],%d", url, ×tamp)
Here's关于 fscanf
变体和格式字符串的更多数据。
关于c - 为什么 fscanf 不扫描行尾的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14738457/