【C语言】字符串和字符串数组的输入和陷阱

浅谈:C语言写程序时,因为没有字符串数据类型,所以字符串和字符串数组的输入也是一个难题和陷阱,这里讨论一下几种字符串输入情况。


字符串输入函数:
1.格式输入函数:int scanf("%s",字符数组名或指针);
2.字符串输入函数:char* gets(字符数组名或指针);
(1)相同点:字符串接受结束后自动加’\0’。
(2)不同点(容易出错):
①scanf :当遇到回车,空格和tab键就认为输入结束,会自动在字符串后面添加’\0’;但是回车、空格和tab键仍会留在输入的缓冲区中(如果连续多次scanf输入的话要注意考虑上一次scanf后的缓冲区有无”垃圾“),只至遇到回车就停止输入。(适用于输入没有空格、tab的字符串)

char s[20],str[20];
scanf("%s",s);          //若输入“Hel lo,World!”    空格认为第一个scanf输入结束,后面输入的字符留在缓冲区送给下一次scanf
scanf("%s",str);        
printf("s=%s str=%s",s,str);    //输出s=Hel str=lo,World!

若想去掉上一次scanf后缓冲区留下的“垃圾”,可以使用gets()

char s[20],str[20],temp[20];
scanf("%s",s);          //输入“Hel lo,World!”  
gets(temp);             //temp= lo,World!
scanf("%s",str);        //输入“Hel lo,World!”  
printf("s=%s str=%s",s,str);    //输出s
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值