scanf 接收 空格 输入_【C/C++】【输入】关于scanf:输入空格,多次使用
一、C/C++中帶空格字符串的輸入
C++中的cin和C中的scanf都是遇到空格或回車結(jié)束。
如果要讓scanf接收空格,可以用讀入字符集合的方式。%[]
char a[100];
scanf("%[^\n]",s);
//%[]:讀入此集合內(nèi)所限定的字符。**一旦遇到不是此集合內(nèi)的字符就停止。**
//%[^ ]:^表示非
二、scanf的多次輸入
scanf無法連續(xù)使用,因為緩沖區(qū)不足。
1.stdin默認緩沖區(qū)給了4k。
2.scanf()接受一個字符輸入,按下回車后換行符保留在緩沖中,第二次輸入時,緩沖符合先進先出,系統(tǒng)遇到第二個scanf時,緩沖區(qū)會先給出換行符。
所以之后的輸入是無效的。
改進方法:
使用fflush(stdin),釋放相應(yīng)內(nèi)存,提供下一次輸入。
【整體代碼】
int main()
{
//輸入 五行輸入 帶空格
for (int i = 0; i < 5; i++)
{
scanf("%[^\n]",s);
for (int j = 0; j < 5; j++)
{
a[i][j] = s[j];
}
fflush(stdin); //釋放內(nèi)存
}
printf("out\n");
//printf("%s",a[0]);
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%c",a[i][j]);
}
printf("\n");
}
system("pause");
}
總結(jié)
以上是生活随笔為你收集整理的scanf 接收 空格 输入_【C/C++】【输入】关于scanf:输入空格,多次使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uboot启动流程概述_uboot 分析
- 下一篇: 青茶什么时候拆_为什么铁观音这么香?到底