当前位置:   article > 正文

c语言获取用户输入字符串是scanf和gets的区别_c语言怎么处理用户输入的字符

c语言怎么处理用户输入的字符

解释

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:

#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>
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()!
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/编程变革者/article/detail/62603
推荐阅读
相关标签
  

闽ICP备14008679号