我刚开始用 C 编程,突然出现了一些奇怪的东西(我在 C++ 中没有遇到过)。
在我的头文件中,我声明了一个变量(参见文件onemoretime
代码.h
),稍后使用用户输入通过scanf()
. 由于某种原因,使用该变量的条件无法正常工作,要么返回无限重复的结果,要么不做任何事情。设置了一些断点,发现第一次onemoretime
在main()
函数中调用,其值不知onemoretime
为何设置为\n
.
这不是scanf()
应该识别的值,但输入被视为新行(显然)。当我输入y
时,应该触发else if
条件并循环回到 的开头main()
,Xcode 的调试器简单地说,error: 'y' is not a valid command.
这是我的.h
文件:
#ifndef C1_Header_h
#define C1_Header_h
float num1, num2;
char op, onemoretime;
#endif
...这是.c
文件中的相关代码:
#include <stdio.h>
#include <math.h>
#include "Header.h"
int main(int argc, const char * argv[])
{
printf("Enter a two-number calculation below:\n");
while (1)
{
scanf("%f%c%f", &num1, &op, &num2);
// addition
if (op == '+')
{
printf("%f\n", num1+num2);
printf("\nDone. Would you like to solve another math problem (y/n)?\n");
scanf("%c", &onemoretime);
while (1)
{
if (onemoretime == 'n')
{
printf("Ok. Terminating program.");
return 0;
}
else if (onemoretime == 'y')
{
// loop back to start main function
}
}
}
}
// rest of code, irrelevant here
}
如果它是一个因素,将鼠标悬停onemoretime
在 Xcode 中的变量上(显示其基本属性),头文件中初始声明之后的变量的每个实例都显示值为\n
.
我究竟做错了什么?的值如何onemoretime
由用户设置,而不是在用户获取之前由程序设置?