我见过在fgets可能会导致问题之前如何使用scanf的各种帖子。但是,为什么在添加它之后添加它会导致第一条语句中断,这是毫无意义的。scanf后fgets打破fgets声明
这是我有:
unsigned char key;
unsigned char message[100];
printf(" Please input a message \n ");
fgets(message, MAX_BUF, stdin);
printf("Your message is: %s \n", message);
// Read user input for message
printf(" Please input a numeric key\n ");
scanf("%d", &key);
printf("Your message is: %s \n", message);
printf("strlen(message) = %d \n", strlen(message));
这是一个“试运行”:
Please input a message
hello
Your message is: hello
Please input a numeric key
123
Your message is:
strlen(message) = 0
与此类似,消息变量最终空无论输入。但是,如果我用scanf注释掉了一行,那么一切正常(除非我不能分配密钥)。
帮助!
对于只在程序中稍后运行的代码,不应该有可能返回并更改以前的输出。因此,请使用您的问题上的编辑按钮来提供[“最小,完整,可验证的示例](http://stackoverflow.com/help/mcve)”。没有人,不可能确切地知道你的定义是什么,或者是什么可能导致你所看到的问题。 – HostileFork 2014-10-03 01:48:31
重要的是报告'fgets()'和'scanf()'的返回值以帮助理解问题。显示你的输入有帮助。 – chux 2014-10-03 01:48:51
感谢您的评论,这是我在Stack Overflow中的第一个问题,所以我对帖子的不完整性表示歉意。我编辑过它,希望现在好。 – 2014-10-04 17:59:37