C语言输入一个中间代有空格的字符串,为什么不可以用scanf? 急急急

如题所述

默认是以空白符作为结束标记的,如果要用scanf读取带空格的字符串,可以这样。

以换行符作为结束标记,从而读取带空格的字符串。

#include <stdio.h> 
int main() 

    char str[100]; 
    scanf("%[^\n]",str);
    printf("%s",str);
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-05-06
因为scanf是以空白符(空格、制表符、换行等等)为结束标志的,当遇到空白符是就会结束一次输入,如果你需要读取空格的话可以使用gets或者getchar本回答被网友采纳
第2个回答  2011-06-24
scanf的话读到空格那么这个字符串就结束了。如果你想读进带空格的字符串就用gets();
第3个回答  2011-06-24
因为C语言的字符串是以'\0'作为结束符为标记的,所以当有空格的时候,scanf就会忽略后面的字符串的
第4个回答  2019-01-09
有了char
a[10];,那么a就是这个数组的第一个元素的指针,&a就是这个数组的指针;因为一维数组的第一个元素的指针和这个数组的指针是同一个地址,区别是a+1指向a[1],而&a+1就指向a[10]了(这里已越界了)。但&a和a的"值"是相同的,只是类型不同。c调用函数时,实参的类型都会被强制为形参的类型,scanf("%s",
&a)或scanf("%s",
a)中要求参数是char
*型指针,那么&a尽管是char
**类型,但被强行转换为char
*型了……

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

c语言scanf为什么不能直接赋值?
代码和输入格式有误。1、scanf("%d,%d",&a,&b);按照这个格式,输入数据的时候,应该加上逗号。比如说想输入22 33 就应该 22,33。2、也可以像这样scanf("%d %d",&a,&b);中间用空格隔开,那样就可以直接输入 22 33了。scanf 的功能用一句话来概括就是“通过键盘给程序中的变量赋值”。该...

请问在c语言中gets为什么遇到空格不停止而scanf遇到空格就停止了,请大...
scanf中%[^\\n]是接收从^字符到\\n字符的所有字符,原本scanf是不接收空格的,遇到空格就当做null来处理停止接受其后边的字符,但是这样控制输入后就会接收空格了,其实也可以用gets函数来接收,gets也接收空格的

求C语言资深高手解答,关于输入和输出
原因在于,你的scanf语句。scanf(%d%c%d%c")表示你要连续输入一个整数一个字符一个整数一个字符,并且整数和字符之间没有任何分割。那么你输入10 A 20 B后,10被赋给了a1,空格被赋给了c1,接着空格被赋给了a2,后面的数字被赋给了c2。所以错了。应该写成scanf(%d %c %d %c"),这样就OK了...

C语言中用scanf函数输入字符时,为什么要在输入控制符%c前面加空格?用s...
c前面的空格就是用来屏蔽空白符的,首先必须要知道C语言 scanf() 函数的特性,以及scanf()与缓冲区、标准输入流之间的联系。在此之前,先介绍两个专业术语。1.缓冲区 缓冲区是一块存放临时输入数据的内存,我们在键盘上输入数据之所以不会马上显示,就是因为数据存放在了缓冲区,在上面例子中,当我们按...

为什么运行不能输入scanf("%c",&c);这一步!见图!
scanf()函数是从键盘缓冲区取数据,而不是直白的理解为我按一个键它才取走,因为你按下的键都被存入缓冲区,也就是说。你的这个函数没有起作用是因为你的键盘缓冲区还有字符,于是scanf()就不等你按下键,直接从缓冲区取走了。记住scanf()不是直接和你打交道,你和scanf()之间还有个键盘缓冲区...

C语言scanf函数用法结果出现的问题
你的输入形式完全取决于你scanf("%d,%d",&a,&b); 中的形式,如你中间加了一个逗号,那么你输入的时候就应该是5,6 如果你不加逗号,那么你可以连续输入,如56它会认为是5和6.

为什么C语言里面scanf("7.2f")无意义?
问题2:scanf("123")有没有用?因为没有给任何变量赋值,所以看起来这条语句不起任何作用,好像有没有都一样,但是下面一个程序就可以证明,这条语句的有无会对运行结果产生影响。测试3:输入为"123"include <stdio.h>#include <stdlib.h>int main(){ freopen("C:\\\\1.txt", "rb", stdin...

C语言程序能否多次使用scanf
a=%d,b=%d,&a,&b),则要输入“a=1,b=2"scanf(%d%d,&a,&b)如果中间没有空格,则1和2之间可以有任意多个空格,因为scanf不会输入空格,但是scanf(%d %d,&a,&b)如果设置的格式间有空格,则输入时的空格至少不比你设置的空格少才行!即保证和你设置的格式一样就不会出错了 ...

C语言中的问题不明白为什么 新人麻烦详细解释一下谢谢
这里scanf指定逗号为输入的分隔符号。所以输入时数字和字符之间必须有逗号。scanf不指定分隔符时,默认以空白字符(空格、回车、制表符)为分隔符。PS:如果写%d%c不指定分隔符号。由于第二个变量是字符型,输入时中间不要加空格符,否则会将空白符号做为字符接收。

相似回答