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

标签 c 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 %d\n", url, timestamp);
}

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

最佳答案

当处理 %s 时,fscanf 需要一个以空格结尾的字符串,它也是贪心的。所以整行都被读入了 url。

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

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

Here's关于 fscanf 变体和格式字符串的更多数据。

关于c - 为什么 fscanf 不扫描行尾的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14738457/

相关文章:

c - C中赋值表达式的结果是什么?

c - Unix C - 将 stdout 重定向到管道,然后返回到 stdout

c - scanf() 函数遇到问题

c - 处理 fscanf()

c - 为什么 scanf 语句在第一个 printf 语句之前执行?

c - scanf 需要比请求更多的输入

c - 如何在c中输入一个段落的多行并根据行数排序

c - 在这个 if 条件下我要问什么?

c - 用零值初始化结构数组

c - printf 语句未在 netbean 中的 scanf 语句之前执行