时间:2021-05-20
解释
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)输出:
Helloworld!程序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的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1.scanf("%s",str)和gets(str)scanf("%s",str)和gets(str)均可用于输入字符串到字符数组变量str,但scanf("
问题描述很多同学跟我一样,都是刚开始接触java,可能从c语言突然转为java语言,有些跟我一样手足无措,那怎么获取用户输入的字符串!如下示列:importJa
在c语言中读取字符串有多种方法,比如scanf()配合%s使用,但是这种方法只能获取一个单词,即遇到空格等空字符就会返回。如果要读取一行字符串,比如:Ilove
%c格式对应的是单个字符,%s格式对应的是字符串。例:chara;charb[20];scanf("%c",&a);//只能输入一个字符。scanf("%s",
C语言中字符串实现逆序实例详解字符串逆序和正序的实现代码:#include#include#include#include#includetyped