【问题标题】:C Scanf: What does a return value of -1 mean?C Scanf:返回值-1是什么意思?
【发布时间】:2014-04-15 13:45:57
【问题描述】:

我正在编写一个扫描来自标准输入的输入的程序(无论如何它都应该如此)。在程序的某个时刻,我需要使用 scanf 扫描一个 int。我也尝试了其他一些功能,它们似乎都导致相同的错误 - 它们返回 -1。我认为这意味着在收集数据/变量分配时出现了一些错误,但我找不到有关这表明哪种错误的文档。我写的代码如下图:

int selection = 4; //default value for selection - it has no meaning.
//printf("DATA SET ANALYSIS\n1. Show all the data.\n2. Calculate the average for an experiment.\n3. Calculate the averae across all experiments.\n4. Quit. \nSelection:__\n");
printf("Return value of scanf: %d\n", scanf("%d", &selection));
printf("Return value of getchar: %d\n", getchar());
printf("Unchanged value of selection: %d\n", selection);

产生以下输出:

Return value of scanf: -1
Return value of getchar: -1
Unchanged value of selection: 4

这个错误的来源和含义是什么?我选择不放我的其余代码。如果没有其余代码就无法评估错误,我可以将其放在编辑中,但由于我不确定错误的来源,这将涉及大量代码。感谢您提供任何解决方案。

【问题讨论】:

  • C 东西的参考,我喜欢POSIX 1.2008; fscanf 记录在那里。 注意:返回值不一定是-1;它是EOF(负值)
  • 在某些情况下,返回值可能为 0,如在 scanf("xyz%d", &i) 中输入为“xyzabc”。

标签: c error-handling return-value scanf


【解决方案1】:

正如documentation 中所指定的,如果读取成功,则返回值为正;如果发生读取错误或到达文件末尾,则返回 EOF(通常为 -1)。

使用您提供的信息,无法找到实际的错误来源,但我建议您查看一下您的标准输入以及它是如何处理的。

【讨论】:

  • 啊,好吧,我不知道 EOF 等于 -1。谢谢你。我现在看看能不能解决。
猜你喜欢
  • 2015-07-15
  • 2012-09-06
  • 2013-04-25
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-16
相关资源
最近更新 更多