• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

c语言获取用户输入字符串是scanf和gets的区别详解

c语言 搞代码 4年前 (2022-01-06) 19次浏览 已收录 0个评论

今天小编就为大家分享一篇c语言获取用户输入字符串是scanf和gets的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

解释

gets(s)函数与 scanf(“%s”,&s) 相似,但不完全相同,使用scanf(“%s”,&s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。

1.scanf()

所在头文件:s来源gao@daima#com搞(%代@#码@网tdio.h

语法:scanf(“格式控制字符串”,变量地址列表);

接受字符串时:scanf(“%s”,字符数组名或指针);

2.gets()

所在头文件:stdio.h

语法:gets(字符数组名或指针);

两者在接受字符串时:

1.不同点:

scanf不能接受空格、制表符Tab、回车等;

而gets能够接受空格、制表符Tab和回车等;

2.相同点:

字符串接受结束后自动加’\0’。

例1:

 #include  int main() {   char ch1[10],ch2[10];   scanf("%s",ch1);   gets(ch2); return 0; } 

依次键入asd空格fg回车,asd空格fg回车,则ch1=”asd\0″,ch2=”asd fg\0″。

程序2:

 #include  int main() { char str1[20], str2[20]; scanf("%s",str1); printf("%s\n",str1); scanf("%s",str2); printf("%s\n",str2); return 0; }

程序的功能是读入一个字符串输出,再读入一个字符串输出。可我们会发现输入的字符串中不能出现空格,例如:

测试一输入:

 Hello word(enter)

输出:

 Hello world!

程序3:

 #include  int main() { char str1[20], str2[20]; gets(str1); printf("%s\n",str1); gets(str2); printf("%s\n",str2); return 0; }

测试:

 Helloworld! [输入] Helloworld! [输出] 12345 [输入] 12345 [输出]

【分析】显然与上一个程序的执行情况不同,这次程序执行了两次从键盘的读入,而且第一个字符串取了Helloworld! 接受了空格符,而没有像上一个程序那样分成了两个字符串!所以如果要读入一个带空格符的字符串时因该用gets(), 而不宜用scanf()!

以上就是c语言获取用户输入字符串是scanf和gets的区别详解的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:c语言获取用户输入字符串是scanf和gets的区别详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址