c语言scanf返回值里scanf(“%s”,message)和gets(message)一样吗?

您当前的位置: &
scanf和gets获取字符串时的区别
分类:计算机等级
更新时间:
  在C语言中,能构获取字符串的函数至少有两个:  1.scanf()  所在头文件:stdio.h  语法:scanf("格式控制字符串",变量地址列表);  接受字符串时:scanf("%s",字符数组名或指针);  2.gets()  所在头文件:stdio.h  语法:gets(字符数组名或指针);  两者在接受字符串时:  1.不同点:  scanf不能接受空格、制表符Tab、回车等;  而gets能够接受空格、制表符Tab和回车等;  2.相同点:  字符串接受结束后自动加'\0'。  例1:  #include &stdio.h&  main()  {  char ch1[10],ch2[10];  scanf("%s",ch1);  gets(ch2);  }  依次键入asd空格fg回车,asd空格fg回车,则ch1="asd\0",ch2="asd fg\0"。  例2:  #include &stdio.h&  main()  {  char ch1[10],ch2[10],c1,c2;  scanf("%s",ch1);  c1=getchar();  gets(ch2);  c2=getchar();  }  依次键入asdfg回车,asdfg回车,则ch1="asdfg\0",c1='\n',ch2="asdfg\0",c2需输入。
近期考试日历表c语言scanf函数_百度知道
c语言scanf函数
,&student&,&teacher&quot?输入其它常量呢scanf函数,输入3个字符串(如&i am&quot?如果输入3个字符呢,以什么分开;),用键盘输入的时候,以什么分开,回车键还是空格还是tab
我有更好的答案
&c),&a,&b,%d&quot,后两个用scanf可以%s格式输入;%d,%d,也可以用回车,scanf函数中可不指定,但如果是scanf(&quot,比如:scanf(&%c%c%c&,但第1个有空格;%d%d%d&输入时输入abc并回车即可。输入3个字符可以不用分割符连续输入,默认scanf会当成两个字符串可以考虑用gets函数输入三行,每行回车结束。输入其他常量一般可以用空格做分割符;,&a;,&a,&b,&c);这样指定了分割符是逗号,就要用逗号做分割符,而scanf(&quot你的输入
输入i am a teacher,i often play football输入这么长的字符串,程序要怎么写,几种写法?
输入一个字符串数组中,比如:char a[256]; gets(a);
采纳率:82%
来自团队:
scanf默认是以空白字符作为结束符,所以你说的三个都可以。
那我输入i am不是也用空格吗?系统怎么判断我是输入一个字符串还是两个字符串
你可以通过gets函数,这个是以回车作为结束符
回车键表示字符输入完了,你应该用tab键作为字符间隔
空格键分开所以你的“i am”无法获取为一个字符串内,只能拆或合
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
scanf的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。今天看啥 热点:
浅谈C语言中scanf(),gets(),getchar()函数区别与联系
众所周知,scanf函数和gets函数是从键盘输入数据的函数。其基本函数功能这里不做过多赘述,只对两个函数易错点深入分析。
int main()
char a[20];
char b[20];
char c[20];
printf(&请输入a字符串\n&);
scanf(&%s&,&a);
printf(&请输入b字符串\n&);
printf(&请输入c字符串\n&);
【分析】程序本意是输入三个字符串,之所以用printf提示输入是因为想更清楚地看清程序怎么运作的,可以从运行界面看到程序提示输入a字符串和c字符串,但是会越过b字符串不让输入。这里会让人感到困惑。
& 因为scanf函数在读取字符串时,遇到回车、空格、制表符不会进行读取或转换,会舍弃掉它们以及它们后面的字符至缓冲区,最后在读取的字符后面加上&\0&.因此到了gets(b)的时候就会读取缓冲区剩下的东西以及最后的换行符就结束了,所以程序不会提示输入b字符串,但是从监视可以看到b中其实是读取了字符串的。然后缓冲区无剩余字符gets(c)可以实现输入c字符串。而且从这个程序也可以体现出来需要用到里面有空格的字符串的时候可以用gets函数。
& 这里还有一个注意点:在gets(c)读取从键盘输入的字符以及最后需要将缓冲区的数据刷新出去的回车符。它和scanf不同的是不会舍弃回车符至缓冲区中, 而是会丢弃换行符将其改为字符串结束标志&\0&。所以我们一般喜欢使用这种带有清理收尾工作的输入函数。
& 最后一个点,我们可以看到b字符串其实读取的是缓冲区中的垃圾数据。因此,为了避免输入流缓冲区中垃圾数据对后续读入的影响,需要清空缓冲区。
下面就介绍方法(不同平台)
& &C标准规定 fflush()函数是用来刷新输出(stdout)缓存的。对于输入(stdin),它是没有定义的。但是有些编译器也定义了 fflush( stdin )的实现,比如微软的VC。其它编译器是否也定义了 fflush( stdin )的实现应当查找它的手册。GCC编译器没有定义它的实现,所以不能使用 fflush( stdin )来刷新输入缓存。
& &对于没有定义 fflush( stdin )的编译器,可以使用 fgets()函数来代替它(比用 getchar()、scanf()等函数通用性好)。可以这样忽略输入流中留下的回车等其它输入,从而使下一次的输入总保持一个&干净&的状态。(这个是任何平台下都可以的)
scanf函数读取字符
int main()
scanf(&%c&,&ch1);
scanf(&%c&,&ch2);
scanf(&%c&,&ch3);
scanf(&%c&,&ch4);
相关搜索:
相关阅读:
相关频道:
&&&&&&&&&&&&&&&&
C语言最近更新有人能告诉我一下C语言中gets函数和scanf函数的区别吗_百度知道
有人能告诉我一下C语言中gets函数和scanf函数的区别吗
我有更好的答案
遇到换行符或文件结束符终止char *gets(char *)从标准输入读取字节流;那么会将读到的字符串保存到a字符数组中。例 char a[64];
gets( a ),使用的时候有数组越界的危险,要使接收输入的字符数组足够大。 int scanf ( Format [,
Pointer, .,
a ),读取整数、浮点数等类型;
从标准输入最多读取64个字符的字符串放到a数组中。比较安全。也可以按照格式.. ])根据给定的格式从标准输入读取数据。例
scanf( &%64s&
采纳率:16%
gets函数包含在string.h头文件中,而scanf包含在stdio.h中。。。
说的直接点,就是,scanf度字符串时,遇到空格或者回车就会输入结束,而gets,则是可以读空格,遇到回车时,输入才结束
为您推荐:
其他类似问题
您可能关注的内容
scanf的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。         
您现在的位置:&&>&&>&&>&&>&&>&正文
scanf和gets获取字符串时的区别
来源:()  【】 
  在C语言中,能构获取字符串的函数至少有两个:  1.scanf()  所在头文件:stdio.h  语法:scanf("格式控制字符串",变量地址列表);  接受字符串时:scanf("%s",字符数组名或指针);  2.gets()  所在头文件:stdio.h  语法:gets(字符数组名或指针);  两者在接受字符串时:  1.不同点:  scanf不能接受空格、制表符Tab、回车等;  而gets能够接受空格、制表符Tab和回车等;  2.相同点:  字符串接受结束后自动加‘“0‘。  例1:  #include &stdio.h&  main()  {  char ch1[10],ch2[10];  scanf("%s",ch1);  gets(ch2);  }  依次键入asd空格fg回车,asd空格fg回车,则ch1="asd“0",ch2="asd fg“0"。  例2:  #include &stdio.h&  main()  {  char ch1[10],ch2[10],c1,c2;  scanf("%s",ch1);  c1=getchar();  gets(ch2);  c2=getchar();  }  依次键入asdfg回车,asdfg回车,则ch1="asdfg“0",c1=‘“n‘,ch2="asdfg“0",c2需输入。  1&&&
文章责编:gaoxiaoliang& 看了本文的网友还看了
?&&( 15:51:47)?&&( 14:16:20)?&&( 14:14:40)?&&( 14:13:00)?&&( 14:10:55)?&&( 14:02:35)
? ?   ? ?   ? ?   ? ?   ? ?
? ?   ? ?   ?
?   ? ?    ? ?   ? ?   ? ?   ? ?
? ?   ? ?
实用工具 |
| 大全 | 大全
     |
版权声明:如果网所转载内容不慎侵犯了您的权益,请与我们联系,我们将会及时处理。如转载本内容,请注明出处。
Copyright & 2004-
 网 All Rights Reserved 
中国科学院研究生院权威支持(北京) 电 话:010- 传 真:010-}

我要回帖

更多关于 c语言 scanf 字符串 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信