【发布时间】: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