您的位置:首页 > 其它

处理格式化输入函数scanf遇空格停止问题

2016-11-09 19:57 302 查看
先看下面这段程序

 #include <stdio.h>

int main()

{
int a;

char b[100];

printf("Please input the number:\n",a);
scanf("%d",&a);

        printf("a = %d",a);

printf("Please input the string:\n",b);
scanf("%s",&b);

    

        printf("b = %s\n",b);

        return 0;

}

简单的输入一个整数、字符,输出一个整数、字符串 函数,我们想要的是在输入输出一个整数之后,程序能够继续运行,但是结果我们发现,程序停了下来 无法输入字符串。

这是因为 用scanf函数输入字符串时,字符串中不能含有空格,否则将以空格作为串的结束符。
为了避免这种情况,可多设几个字符数组分段存放含空格的串。

解决类似的这种问题我在网上和书里找了两个方法:

1、可以在两个scanf()函数之后加个fflush(stdin),或者加getch()、getchar();

     printf("Please input the number:\n",a);
scanf("%d",&a);

     getchar();
printf("Please input the string:\n",b);
scanf("%s",&b);


2、scanf()函数里有一个“%[]”格式控制符,其含义是,从方括号指定的集合中读取字符。读取不在集合中的字符,就结束输入。

%[]格式控制符提供了很大的灵活性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: