c语言 - 为什么 fscanf 不扫描行尾的整数?

  • 本文关键字:扫描 整数 fscanf 语言 scanf
  • 更新时间 :
  • 英文 :


我试图读入一个包含多行格式的文件:

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 %dn", url, timestamp);
}

但是,fscanf将整行扫描到字符串中,而不将时间戳扫描到整数中。我确信这是一个非常基本的错误,但我想不通。有人能解释一下为什么会这样,以及我该如何着手解决它吗?

在处理%s时,fscanf需要一个以空格结尾的字符串,而且它也是贪婪的。因此,整行都被读取到url中。

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

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

以下是关于fscanf变体和格式字符串的更多数据。

相关内容

  • 没有找到相关文章

最新更新