scanf函数怎样输出很多字符串中间要用空格隔开呢?
%c前面的空格就是用来屏蔽空白符的,
首先必须要知道C语言 scanf() 函数的特性,以及scanf()与缓冲区、标准输入流之间的联系。在此之前,先介绍两个专业术语。
1.缓冲区
缓冲区是一块存放临时输入数据的内存,我们在键盘上输入数据之所以不会马上显示,就是因为数据存放在了缓冲区,在上面例子中,当我们按下回车键后,缓冲区的数据会传送到标准输入流。
2.标准输入流
标准输入流(stdin)是文件指针,scanf()就是从标准输入流或许数据。
以上面代码为例,当执行到scanf()时,
电脑开始执行以下操作:
开始等待用户输入
2.当我们输入数据,在按下回车键前会把数据储存在缓冲区,按下回车键后,会把数据以及换行符(
)一起传送到标准输入流(stdin)中,
scanf()就是从标准输入流中或许数据,上面第一个scanf()要读入一个整数,它从标准输入流中查找,跳过空白符(空格、换行符、制表符)
3.如果遇到数字,则开始读入,直到遇到非数字的字符结束,最后计算读取到的数值,储存到相关变量中。
使用scanf注意事项
1.参数的个数一定要对应
2.输入的数据类型一定要和所需要的数据类型一致
3.每次调用完scanf后,记得调用一个getchar()函数
扩展资料
1.函数 scanf() 是从标准输入流stdio (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
2.函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。
每一个指针要求非空,并且与字符串中的格式符一一顺次对应。
参考资料
网页链接
你这个题目说的有点不清楚。
1.gets()
【1】函数:gets(字符指针)
【2】头文件:stdio.h(c中),c++不需包含此头文件
【3】原型:char *gets( char *buffer );
【4】功能:从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。
【5】注意:本函数可以无限读取,不会判断上限,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。如果溢出,多出来的字符将被写入到缓冲区后面的内存位置,这将破坏一个或多个不相关变量的值。这个事实导致gets函数只适用于玩具程序。
【6】示例:
#include
using namespace std;
int main()
{
char str[100];
gets(str);
cout<<str;
return 0;
}
gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。其调用格式为:
gets(s);
其中s为字符串变量(字符串数组名或字符串指针)。
gets(s)函数与scanf("%s:",&s)/* scanf("%s",s) */相似,但不完全相同,使用scanf("%s",&s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。
说明:
gets(s);函数中的变量s为一字符串。如果为单个字符,编译连接不会有错误,但运行后会出现”Null pointer asignment"的错误。
百科对gets的说明:http://baike.baidu.com/view/1457521.htm
Scanf:
scanf(格式控制,地址表列)
int scanf(char *format[,argument,...]);
“格式控制”的含义同printf函数;“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。
scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。
例:使用scanf函数输入数据。
在visual c++ 6.0上的编写方式。
#include
void main()
{
int a,b,c;
printf("please input a,b,c");
scanf("%d %d %d",&a,&b,&c); // 这里记得在输入时也得按这个格式输入,所以这里应该这样输入:1 2 3然后按回车,不然就得不到你想要的结果
printf("a=%d,b=%d,c=%d",a,b,c);
}
百科对scanf的说明:http://baike.baidu.com/view/1390039.htm
直接输入就行了
如果你说的是输出,用printf,自己在里面加空格
printf("1 2 3 %d %d %d", 4, 5, 6);
你现在在使用的C语言程序设计完全是别人已经设计好了的,scanf也是别人写好了的,别人喜欢用空格来隔开嘛。 如果你技术好点,你可以自己写一个方法,不用空格隔开,那也是可以的嘛。你可以自己设计一下嘛!
scanf()函数是不能输出字符的,输出函数是printf()函数
scanf函数 空格就代表输入内容结束
canf("#d#d",&a,&b);为什么我需要输入三个数字才会运行程序呢?_百度...
scanf("%#d%#d %d %d", &a,&b);如果是这样的格式,%#d 表示 跳过一个输入数,这样要输入4 个数,跳过2个,读入后两个。scanf("%d %d ", &a,&b);如果是这样的格式,第二个%d 后面有空白,只输入两个数,程序就一直等待,要打入第3个数。scanf("%d %d", &a,&b); -- 这样的...
C语言用scanf给数组赋值问题
scanf()中如果在%d后面加了一个空格,会使scanf()函数在读数时跳过输入中的空白字符(包括空格、回车等),直到遇到第一个非空白字符出现为止。当你输入完5个数之后,由于你的%d后面带空格,所以scanf仍然在期待出现一个非空白符才结束。你甚至可以在输入完5个数之后,再输入一个字母,也是可以的(只...
...用以下语句scanf("%d",&i);scanf("%d",&j);canf("%d",&k);进行...
ijk的值分别是12 0 0
海尔滚筒洗衣机出现CANF是什么意思?
1、同时按住脱水和预约当海尔滚筒全自动洗衣机出现LOCF时,使用者就会面临无法洗涤的尴尬。更有甚者会疑惑是否发生了故障、损坏。其实这只不过是洗衣机的自我保护机制,原因则是使用者错误地使用了洗涤模式,所以当出现LOCF时,使用者可同时按住脱水和预约两个按键,大概3-5秒就可以成功解锁了。2、热水温...
YoucanfⅠythere。汉语是什么意思?
应该是前面有情境的时候说的话,意思是:你可以在那里飞。望采纳,谢谢
printf的返回值是什么
表示可选参数,调用时传递给"..."的参数可有可无,根据实际情况而定。系统提供了vprintf系列格式化字符串的函数,用于编程人员封装自己的I\/O函数。int vprintf \/ vscanf(const char * format, va_list ap); \/\/ 从标准输入\/输出 格式化字符串 int vfprintf \/ vfsacanf(FILE * stream, const char...
MATLAB Transfer Fcan 参数小数点设置出错
你把小数点输成句号了,也就是“0.1”被你输成了“0。1”。输入英文或数字时最好把中文输入法关掉。
我在看一个键盘扫描函数,这个WriteInstruction(0xc0+11)实在看不懂,求...
void keyscan(){ if(s1==0) \/\/第一个键是否按下 { delay(5); \/\/延时去抖 if(s1==0){ while(!s1); \/\/等待键抬起 s1num++; \/\/按键次数加1 if(s1num==1) \/\/第一个键被按一次 { TR0=0; \/\/关闭定时器0 WriteInstruction(0xc0+11); \/\/显示??WriteInst...
本田fcan通讯故障是什么意思?
本田FCAN通讯故障指的是快速总线通信信号出现了问题。FCAN是发动机和变速箱控制器之间的通讯故障,也就是PCM(A\/T)的通讯故障。CAN是控制器局域网络(ControllerAreaNetwork,简称CAN),由德国BOSCH公司开发并成为国际标准(ISO11898),是国际上应用最广泛的现场总线之一。在北美和西欧,CAN总线协议已经...
傅里叶级数和傅里叶变换超详细推导(DR_CAN)
首先,阐述三角函数的正交性。在三角函数集合中,如sin(x), cos(x), sin(2x), cos(2x)等,任意两函数的积分在特定区间下为0,即正交性。具体表现如下式,当n不等于m时,积分结果为0。若m=n,则积分结果非零,说明正交性成立。接着,探讨周期为2π的函数f(x)的傅里叶展开。利用三角函数的...
咸狮女宝: 主要是因为你的指针b所指向的内存没有确定,所以会引起错误.你现在只是声明了一个字符指针,但是它指向哪里没有确定,这就是著名的指针悬挂问题了. 在输入之前申请一段内存,可以使用malloc等函数动态申请,也可以直接申请一个字符数组用于存储输入的字符串.然后让b指向这个字符数组,就可以了. #includeint main() {int a;char *b; char name [20]; b=name; scanf("%d%s",&a,b); //最好不要加逗号,输入的时候直接用空格分隔就行了 printf("%d,%s\n",a,b); return 0; }
楚雄市17253542694: 利用scanf函数输入多个字符串时,scanf函数的格式与字符串输入的格式应如何设置 - ?
咸狮女宝: 给你一个例子 char buff1[128],buff2[128]; scanf("%s%s",buff1,buff2); 但是这样的缺点是无法获取到包含空白字符的字符串,因此如果包含空格TAB这样的空白字符,建议使用gets函数
楚雄市17253542694: scanf getchar 等遇到一次输入多个字符是如何输入? - ?
咸狮女宝: getchar()本来就是接收一个字符,“A”是一个字符,回车也是一个字符,不记得吗“\n”转义字符,所以这就是getchar()的输入,一个一个的输入字符; 具体用法scanf 格式输入函数 函数作用:按照变量在内存的地址将变量值存进去. ...
楚雄市17253542694: C语言怎么用printf输出字符串. - ?
咸狮女宝: void main() { unsigned char *x = "ab,sdf,sad,23432,cc"; data = x;printf("data = %c\n", *data); printf("data = %s\n", data); system("pause"); } 扩展资料: printf输出字符串的一些格式 1、原样输出字符串:printf("%s", str); 2、输出指...
楚雄市17253542694: 求助,如何用Scanf或Gets函数将连续输入的,以回车隔开的多个字符串分别写入数组,再原封不动的打印出来? - ?
咸狮女宝: 1.需要用二维字符数组2.原因在于gets()的返回值是传入的参数的地址,而不是读取的字符,以下程序可以达到你的目的,注意输入CTRL+D时要另起一行.//---------------------------------------------------------------------------#include <stdio.h> int main(void...
楚雄市17253542694: 用scanf把混乱字符串里的整数取出来求和 急需啊 一定用scanf - ?
咸狮女宝: #include<stdio.h> main() { char a[100],*p1,*p2; long temp; long sum=0; scanf("%s",a); p1=a; while(*p1) { if(*p1>='1' && *p1<='9') { temp=0; p2=p1; while(*p2>='0' && *p2<='9') { temp=temp*10+*p2-'0'; p2++; } sum+=temp; p1=p2-1; } p1++; } printf("%d",sum); }
楚雄市17253542694: 关于scanf的用法 - ?
咸狮女宝: 呵呵,其实我不懂,借鉴网友: nestalc 的回答,如有不明之处,可以加他好友询问下! scanf 格式输入函数 函数作用:按照变量在内存的地址将变量值存进去. 一般格式:scanf(格式控制,地址表列) 其中,格式控制: %d:以带符号的十...
楚雄市17253542694: 在整体输入/输出字符数组时,scanf()函数与gets()函数有什么区别呢? - ?
咸狮女宝: 首先这两个函数都是输入函数,输出函数另外是printf()和puts(); scanf()是格式输出函数 ,对它输入字符型数组时,格式为scanf("%s",str);注意这里的str没有地址符&,因为格式控制符%s在格式输出和输入函数中,都有要求字符串的...
楚雄市17253542694: c语言中的scanf 函数的用法 - ?
咸狮女宝: 输出的值只是空格前面的字符是因为scanf函数的输入格式错误,输入参数的变量前需要加&.scanf("%s",s);改为scanf("%s",&s); scanf的用法是:scanf("格式控制字符串",输入参数一,输入参数二);格式控制字符串包含:格式控...
楚雄市17253542694: 找出最长的字符串(C语言).输入5个字符串,输出其中最长的字符串.输入字符串调用函数scanf("%s",sx) - ?
咸狮女宝: #include<stdio.h> #include<string.h> int main(int argc, char **args) { int i = 0; char *p1,*p2; if (argc < 2) { printf("no string!\n"); return 1; } p1 = args[1]; while (++i < argc) { p2 = args[i]; if(strlen(p1) < strlen(p2)) p1 = p2; } printf("%s\n", p1); return 0; }