scanf("%s",&a);的输入语句有包括空格吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scanf("%s",&a);的输入语句有包括空格吗?相关的知识,希望对你有一定的参考价值。

scanf(“%s”,m);//首先scanf这个函数是按照一定的输入格式从标准输入窗口获取数据,并将其赋值给变量;这里%s 是指输入一个字符串,而此处的m 即是一个字符串变量名,其本身就表示字符串m的首地址;因此无须再加取地址符&;
printf("%d%f%s",a,b); //这里没有完整写出参数列表,控制格式与后边的参数个数不匹配,最好写成
printf("%d%f%s",a,b,c);或者 printf("%d%f",a,b);

这里的 a 对应的是 %d 是表示 以十进制整数形式输出a
这里的 b 对应的是 %f 是表示 以浮点数形式输出b
c对应的是 %s 是表示以字符串形式输出c

scanf("%d%f",&a);
这里的a对应的是%d,即必须输入一个十进制整数
输入一个整数后 这条语句并没有结束,还需要再输入一个浮点数,只不过这个浮点数存放于缓冲区中,并未赋值给指定变量。
参考技术A 不包括 会截断

例如输入 asdd ddaddd

那么 字符串数组a只能接收到 asdd本回答被提问者和网友采纳
参考技术B scanf的输入不能包含空格,可以通过fgets或者getline来读取一行来处理。 参考技术C 不包括,空格 tab 回车都会终止输入

关于scanf的输出问题,有高手请教一下如何用scanf输出多种类型的变量,下面是我写的例题

#include<stdio.h>
int main()
int a;char *b;
scanf("%d,%s",&a,b);
printf("%d,%s\n",a,b);
return 0;

这个例子比较简单,我在键盘上键入2,abc然后回车,但是输出段错误;
然后我直接重新执行程序 键入22回车,输出22,乱码;
老跳出来段错误。
我想问%s和%d格式的变量是不是不能一起输入,或者应该是什么样的格式???

主要是因为你的指针b所指向的内存没有确定,所以会引起错误。你现在只是声明了一个字符指针,但是它指向哪里没有确定,这就是著名的指针悬挂问题了。
在输入之前申请一段内存,可以使用malloc等函数动态申请,也可以直接申请一个字符数组用于存储输入的字符串。然后让b指向这个字符数组,就可以了。
#include<stdio.h>
int main()
int a;char *b;
char name [20];
b=name;
scanf("%d%s",&a,b); //最好不要加逗号,输入的时候直接用空格分隔就行了
printf("%d,%s\n",a,b);
return 0;
参考技术A 指针可能不行 改成字符型数组吧 这样可以
#include<stdio.h>
int main()
int a;char b[10];
scanf("%d%s",&a,b);
printf("%d,%s\n",a,b);
return 0;
参考技术B 应该是scanf("%d%f",&a,&b); 参考技术C 传给scanf的字符串参数ms必须为数组,char*会挂

#include<stdio.h>
int main()

int a;char b[10];
scanf("%d,%s",&a,b);
printf("%d,%s\n",a,b);
return 0;
参考技术D #include<stdio.h>
#include<stdlib.h>
int main()

int a;char *b=new char(10);//错误的原因是因为你这里用到指针,用指针之前要给他一个地址
scanf("%d,%s",&a,b);
printf("%d,%s\n",a,b);
system("pause");
return 0;

指针在没有给它赋值之前他的指向是无法确定的,有可能他只想的内存里存储着重要的信息,指针在使用之前没有给它赋值,有可能导致电脑里重要的信息被修改或丢失,为是不是这种糟糕的事情发生,一般情况下电脑会报错组织该情况的发生!!

以上是关于scanf("%s",&a);的输入语句有包括空格吗?的主要内容,如果未能解决你的问题,请参考以下文章

scanf("%c", &ch)和scanf(" %c", &ch)和scanf("%s", str)的注意事项

scanf("%s",s)与gets(s)

字符串输入 gets(s)与 scanf("%s",&s)

c语言编程:已知三角形的三边长,求其面积。

#寒假集训[20200111-1]

c语言中,使用scanf输入一句话,中间有空格,怎样用printf将这句话打印出来