6.3 技术解惑
6.3.1 gets_s函数和scanf函数的区别
scanf函数和gets_s函数都可用于输入字符串,但在功能上有所区别。若想从键盘上输入字符串“hi hello”,则应该使用gets_s函数。gets_s可以接收空格,而scanf遇到空格、回车符和制表符都会认为输入结束,所以它不能接受空格。例如:
char string[15]; gets_s (string); /*遇到回车符为认为输入结束*/ scanf("%s", string); /*遇到空格会认为输入结束*/
在输入字符串中包含空格时,应该使用gets输入。
在C语言中,至少有两个能够获取字符串的函数:scanf和gets_s。二者的不同点如下所示。
❑ scanf不能接受空格、制表符、回车符等。
❑ gets_s能够接受空格、制表符和回车符等。
二者的相同点如下所示:
❑ 在字符串结束后会自动加’\0'。
❑ 当scanf函数遇到回车符、空格和制表符后会自动在字符串后面添加’\0',但是回车符、空格和制表符仍会留在输入的缓冲区中。
❑ gets_s可以接受Enter键之前输入的所有字符,并用’\n’替代’\0',回车符不会留在输入缓冲区中。
❑ 用gets_s读取字符串,用Enter结束输入。
❑ scanf可以读取所有类型的变量。