gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章c语言获取用户输入字符串是scanf和gets的区别详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

解释 。

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

1.scanf() 。

所在头文件:stdio.h 。

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

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

2.gets() 。

所在头文件:stdio.h 。

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

两者在接受字符串时:

1.不同点:

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

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

2.相同点:

字符串接受结束后自动加'\0'.

例1:

?
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
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:

?
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main()
{
char str1[20], str2[20];
scanf ( "%s" ,str1);
printf ( "%s\n" ,str1);
scanf ( "%s" ,str2);
printf ( "%s\n" ,str2);
return 0;
}

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

测试一输入:

?
1
Hello word(enter)

输出:

?
1
2
Hello
world!

程序3:

?
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main()
{
char str1[20], str2[20];
gets (str1);
printf ( "%s\n" ,str1);
gets (str2);
printf ( "%s\n" ,str2);
return 0;
}

测试:

?
1
2
3
4
Helloworld! [输入]
Helloworld! [输出]
12345 [输入]
12345 [输出]

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

以上这篇c语言获取用户输入字符串是scanf和gets的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/cowoc1961331326/article/details/72190092 。

最后此篇关于c语言获取用户输入字符串是scanf和gets的区别详解的文章就讲到这里了,如果你想了解更多关于c语言获取用户输入字符串是scanf和gets的区别详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com