在Windows上,
char c;
int i;
scanf("%d", &i);
scanf("%c", &c);
Run Code Online (Sandbox Code Playgroud)
计算机跳过从控制台检索字符,因为'\n'保留在缓冲区上.但是,我发现下面的代码效果很好.
char str[10];
int i;
scanf("%d", &i);
scanf("%s", str);
Run Code Online (Sandbox Code Playgroud)
就像上面的情况一样,'\n'仍然保留在缓冲区上但为什么scanf这次成功从控制台获取字符串?
从gcc手册页(我没有Windows方便):
%c:始终匹配固定数量的字符.最大字段宽度表示要读取的字符数; 如果未指定最大值,则默认值为1.它也不会跳过初始空白字符.
%s:匹配一串非空白字符.它跳过并丢弃初始空格,但在读完之后遇到更多空格时会停止. [本条款应解释您所看到的行为.]
| 归档时间: |
|
| 查看次数: |
7878 次 |
| 最近记录: |