浅谈: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