我正在编写一个程序来扫描来自 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/