0

我正在尝试读取包含多行表单的文件:

www.someurl.com,timestamp

我正在使用以下代码:

char url[256];
unsigned int timestamp;

// Read each line from the input file.
while(fscanf(inputfile, "%s,%d", url, &timestamp) == 2) {
    printf("%s was visited at %d\n", url, timestamp);
}

但是,fscanf将整行扫描成字符串,而不将时间戳扫描成整数。我确定这是一个非常基本的错误,但我无法弄清楚。有人可以解释这是为什么,以及我该如何解决它?

4

1 回答 1

4

处理时%sfscanf需要一个以空格结尾的字符串,而且它也是贪婪的。所以整行被读入url。

可以直接指定禁止字符集:

fscanf(inputfile, "%[^,],%d", url, &timestamp)

这里有更多关于fscanf变体和格式字符串的数据。

于 2013-02-06T20:49:48.717 回答