首先,我想将我的代码粘贴到此处以供将来参考:
int dayNum = 0;
printf("\n\nEnter your date(1 - 30/31): ");
scanf("%d\n", &dayNum);
printf("\n\nEnter your note:");
char note[10000];
gets(note);
printf("%s", note);
代码是我认为不言自明且易于理解的。但是,这是我方面的一个简短的解释。此代码只获取整数输入并将其存储到变量中,然后准备将字符串作为输入并将其打印到控制台。
我希望代码运行如下:
Enter your date(1 - 30/31): <my_input>
Enter your note: <my_long_note>
<my_long_note> //prints my note that I wrote above
但是,现在发生的事情就是这样(异常):
Enter your date(1 - 30/31): <my_input>
<my_long_note> //this is an input
Enter your note: <my_long_note> //this is an output
正如您所看到的,在打印Enter your note:
之前需要注意。
有人能告诉我为什么会这样吗?我不太确定我在那里做错了什么。
答案 0 :(得分:2)
您需要刷新输出流..这意味着在printf中包含\n
,或者手动调用fflush(stdout)
。
答案 1 :(得分:0)
啊,经过另一次搜索,我发现了这个:
使用scanf("%d%*c", &a)
。 %*c
术语导致scanf读取一个字符(换行符),但星号会导致该值被丢弃。
所以我的最终代码变成了这个:
int dayNum = 0;
printf("\n\nEnter your date(1 - 30/31): ");
scanf("%d%*c", &dayNum);
printf("\n\nEnter your note:");
char note[10000];
gets(note);
printf("%s", note);
并且,它有效。