C Scanf : What does a return value of -1 mean?

标签 c error-handling return-value scanf

我正在编写一个程序来扫描来自 stdin 的输入(无论如何它都应该如此)。在程序的某个时刻,我需要使用 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

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

最佳答案

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

根据您提供的信息,无法找到实际的错误源,但我建议您查看一下您的标准输入及其处理方式。

关于C Scanf : What does a return value of -1 mean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22334343/

相关文章:

c - 代码的输出全为零

`posix_spawn` 的能力

python - 如何对两个文件执行错误处理?

php - 错误PHP 7.4尝试访问类型为bool的值中的数组偏移量

c++ - 从 vector C++ 返回结构元素

c - 如何使我的程序在每个给定时间(例如 1/s)仅迭代一次?

c - 在 void 指针的指针值处赋值

Angular2 错误处理最佳实践

C++ 静态构造函数返回一个容器

swift - 'MKPinAnnotationView' 不可转换为 '()'