#include<stdio.h>
void main(){
char str[100];
char letter;
letter=getchar();
printf("%c",letter);
gets(str);
//Rest of code
}
Run Code Online (Sandbox Code Playgroud)
执行时,代码会跳过gets(str)行.但是当我用scanf替换gets时,它可以工作.任何具体的原因,为什么不起作用?我正在使用gcc 4.7.2.
第一次调用getchar()会在输入缓冲区中留下换行符.下一个调用gets()将换行视为输入结束,因此不会等待您输入.
使用另一个getchar()来使用换行符.
...
letter=getchar();
getchar(); // To consume a newline char left
printf("%c",letter);
fgets(str, sizeof str, stdin);
Run Code Online (Sandbox Code Playgroud)
注意: gets()因为它容易受到缓冲区溢出的危险.所以请改用fgets().
| 归档时间: |
|
| 查看次数: |
1956 次 |
| 最近记录: |