C语言里可以只用scanf读入空格吗?

不用gets和getchar。
就只用scanf,比如the king of
直接用scanf("%s",str);肯定不好使,只读进了the
而且单词数和每次间隔的空格数也是未知的。不可以采用scanf("%s %s %s",&a,&b,&c);这种形式。
请问有人知道有什么办法实现吗?

第1个回答  2007-02-05
不那么方便,因为scanf()读入字符串时会跳过空格、回车,而只有读字符(%c)才读空格和回车,这与getchar()就没区别了。再有就是用%[]格式符,用法自己上网查吧。
可以用下面的方法解决,不过挺麻烦的。

#include <stdio.h>

int main()
{
char s[BUFSIZ], c;
while (scanf("%s%*[ \t]", s) == 1) {
printf("s = %s\n", s); /* 对读到的单词处理 */
if (scanf("%c", &c) == 1) {
if (c == '\n')
break;
else
ungetc(c, stdin);
}
else
break;
}
return 0;
}
第2个回答  2007-02-05
可以。不用系统提供的函数库,自己编一个代替。
第3个回答  2007-02-05
用 gets() 就行了,scanf() 有些地方实在是....
第4个回答  2007-02-05
char string[100],ch;
int i=0;
do
{
scanf("%c",&ch);
string[i++]=ch;
}
while(ch!='\n');
string[i-1]='\0';本回答被提问者采纳
第5个回答  2007-02-05
干吗不用gets??

在c语言中只用scanf怎能输入带空格的字符?
下面这个读一整行,允许夹空白,tab 等等。类似 gets()。include<stdio.h> main(){ char str[200];scanf("%[^\\n]",str);printf("%s\\n",str);}

scanf用%c的时候可以识别空格吗?
c前面的空格就是用来屏蔽空白符的。(scanf()读入字符串中的空格)include<stdio.h> int main(){ char a[777];scanf("%[^\/n]",&a);printf("%s",a);return 0;}

C语言中scanf()与gets()函数的区别,哪一个可以读入空格啊?
1.scanf不能接受空格、制表符Tab、回车等;对末尾回车符的处理:把回车符保留在缓存中。gets能够接受空格、制表符Tab和回车等;对末尾回车符的处理:接收回车,但把回车替换为\\0。2.scanf :当遇到回车,空格和tab键会自动在字符串后面添加'\\0',但是回车,空格和tab键仍会留在输入的缓冲区中。gets...

C语言中用scanf()和fscanf()读取空格
scanf和fscanf函数是不能读空格和回车符的,在读取的时候会自动过滤掉这些分隔符。要想读空格,必须用gets函数,在string.h中有定义,需要实现include它。gets的用法:char a[10];gets(a);c++下也可以用getline函数,不过建议VC用户不要用,因为微软的C++编译器有个经典的getline bug.在缓冲的时候会多...

c语言里,scanf("%s",chars); 如果我一直输入空格,它就一直不会读取是...
c语言里,scanf("%s",chars); 如果一直输入空格,它就一直读取不到chars数组的内容。scanf()是从第一个非空白字符开始读入的(scanf根本不读入空格当然是从第一个非空格读入),详细地说,当我们输入数据时,在按下回车键前输入的数据都储存在缓冲区,按下回车键后,会把数据及换行符一起传送到标准...

C语言中用scanf("%c",&ch);程序会出错,如果scanf(" %c",&ch);在%c...
控制串中的空白符使 scanf() 在输入流中跳过一个或多个空白行。空白符可以是空格(space)、制表符(tab)和新行符(newline)。 本质上,控制串中的空白符使 scanf() 在输入流中读,但不保存结果,直到发现非空白字符为止。这是百度里关于fflush(stdin)的说明:http:\/\/baike.baidu.com\/link?url=...

C语言输入一个中间代有空格的字符串,为什么不可以用scanf? 急急急
默认是以空白符作为结束标记的,如果要用scanf读取带空格的字符串,可以这样。以换行符作为结束标记,从而读取带空格的字符串。include <stdio.h> int main() { char str[100]; scanf("%[^\\n]",str); printf("%s",str); return 0;} ...

c语言中如何用scanf读取一个带有空格的string
要输入带空格的字符串,要用到一个格式字符:%[] --> 一个字符集。“%[]”的作用是扫描字符集合:例如:scanf(“%[^\\n]”,str);具体作用是:如果输入的字符属于方括号内字符串中某个字符,那么就提取该字符;如果一经发现不属于就结束提取。该方法会自动加上一个'\\0'到已经提取的字符后面。...

c语言中怎样用scanf()读入带空格的字符串
现在gcc中gets()不让用了,可以使用 char str[100];fgets(str,100,stdin);\/\/stdin键盘输入 fputs(str,stdout);\/\/输出 或者:char str[100];scanf("%[^\\n]",str);\/\/遇到\\n换行符停止 printf("%s\\n",str);输出

c语言字符串类型一般用什么类型变量表示
C语言字符串就是字符组成的数组,即字符数组,比如定义一个 char a[10];可以用scanf("%s",a)读入,但是不可以读入空格;,也可以用gets(a)读入,可以读入空格。字符串的末尾会自动加一个'\\0'.这是字符串结束的标志

相似回答