我试图读入一个包含多行格式的文件:
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 %dn", url, timestamp);
}
但是,fscanf
将整行扫描到字符串中,而不将时间戳扫描到整数中。我确信这是一个非常基本的错误,但我想不通。有人能解释一下为什么会这样,以及我该如何着手解决它吗?
在处理%s
时,fscanf
需要一个以空格结尾的字符串,而且它也是贪婪的。因此,整行都被读取到url中。
您可以直接指定禁止的字符集:
fscanf(inputfile, "%[^,],%d", url, ×tamp)
以下是关于fscanf
变体和格式字符串的更多数据。