|
10鱼币
#include <stdio.h>
int main()
{
int n, i;
printf("请输入字符的个数:");
scanf("%d", &n);
char a[n+1];
printf("请开始输入字符:");
getchar(); // 将标准输入流中剩下的 '\n' 扔掉
for (i = 0; i < n; i++)
{
scanf("%c", &a[i]);
}
a[n] = '\0';
printf("你输入的字符串是:%s\n", a);
return 0;
}
getchar函数不是输入字符后按回车结束么,那么调用getchar函数后回车怎么直接执行循环了?而且注释解释的‘\n'扔掉怎么实现的。
小白一枚,描述可能不准确
本帖最后由 ExiaGN001 于 2022-9-16 20:31 编辑
缓冲区中的不可见字符会转义处理(回车以\n表示,空格以[空格]表示)
以输入数据为例:
printf("请输入字符的个数: ");
输入缓冲区:请输入字符的个数:[空格]
scnaf("%d",&n);
输出缓冲区:\nabcde\n
printf("请开始输入字符: ");
输入缓冲区:请开始输入字符:[空格]
getchar();
输出缓冲区:abcde\n // \n被getchar()吸走了
for(i=0->i=6;)//伪代码,不能执行
scanf("%c",&a[ i]);
输出缓冲区:bcde\n
scanf("%c",&a[ i]);
输出缓冲区:cde\n
scanf("%c",&a[ i]);
输出缓冲区:de\n
scanf("%c",&a[ i]);
缓冲区:e\n
scanf("%c",&a[ i]);
缓冲区:\n
scanf("%c",&a[i]);
因为\n不满足%c的条件,故此处会等待输入
缓冲区:\n
|
最佳答案
查看完整内容
缓冲区中的不可见字符会转义处理(回车以\n表示,空格以[空格]表示)
以输入数据为例:
printf("请输入字符的个数: ");
输入缓冲区:请输入字符的个数:[空格]
scnaf("%d",&n);
输出缓冲区:\nabcde\n
printf("请开始输入字符: ");
输入缓冲区:请开始输入字符:[空格]
getchar();
输出缓冲区:abcde\n // \n被getchar()吸走了
for(i=0->i=6;)//伪代码,不能执行
scanf("%c",&a[ i]);
输出缓冲区:bcde\n
scanf(" ...
|