c语⾔获取⽤户输⼊字符串是scanf和gets的区别详解
解释
gets(s)函数与 scanf("%s",&s) 相似,但不完全相同,使⽤scanf("%s",&s) 函数输⼊字符串时存在⼀个问题,就是如果输⼊了空格会认为字符串结束,空格后的字符将作为下⼀个输⼊项处理,但gets()函数将接收输⼊的整个字符串直到遇到换⾏为⽌。1.scanf()
所在头⽂件:stdio.h
语法:scanf("格式控制字符串",变量地址列表);
接受字符串时:scanf("%s",字符数组名或指针);
所在头⽂件:stdio.h
语法:gets(字符数组名或指针);
两者在接受字符串时:
1.不同点:
scanf不能接受空格、制表符Tab、回车等;
⽽gets能够接受空格、制表符Tab和回车等;
2.相同点:
字符串接受结束后⾃动加'\0'。
例1:
#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:
#include <stdio.h>
c语言和c++区别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 <stdio.h>
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的区别详解就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论