处理格式化输入函数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()函数里有一个“%[]”格式控制符,其含义是,从方括号指定的集合中读取字符。读取不在集合中的字符,就结束输入。
%[]格式控制符提供了很大的灵活性。
#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()函数里有一个“%[]”格式控制符,其含义是,从方括号指定的集合中读取字符。读取不在集合中的字符,就结束输入。
%[]格式控制符提供了很大的灵活性。
相关文章推荐
- scanf_s()函数—帮你解决带有空格的字符串的输入问题
- 关于scanf格式化输入函数的小问题
- c语言scanf()停止接受输入及scanf("%c",&c)吃掉回车或者空格字符的问题
- C语言中scanf格式化输入函数
- C语言中scanf格式化输入函数
- strlen()不能算出scanf输入字符串的空格问题
- C语言scanf函数输入时键盘缓冲区\n的问题[经典问题]
- scanf和printf函数家族用于格式化输入和输出(转)
- 一个字符变量存储到动态分配内存引发的输入问题解决--连续输入scanf函数存在缓冲区的问题
- scanf()函数如何输入一个带空格的字符串函数
- string 类型的输入操作符和geline 函数对空白字符(空格,换行,制表)的处理
- C语言 scanf输入回车或空格时停止输入
- scanf函数输入float数需要注意的问题
- 关于用连续用多个scanf函数输入数据时前面的scanf函数会在缓冲区留下回车符的问题
- 深入解析scanf()/getchar()和gets()等函数针对字符串输入的问题
- 格式化输入函数scanf()及输入输出函数的*修饰符
- scanf()函数连续输入数字,字符引发的小问题
- C语言中scanf函数输入回车符的问题
- C语言的格式化输入函数scanf
- c中scanf的格式化输入函数