获取终端输入字符串scanf,gets,fgets
获取终端中输入字符串,我们常用getchar(),scanf(),gets(),和fgets()函数实现,这里简单汇总一下:
scanf() 函数可以获取到终端字符串,但是不能识别到空格字符,遇到空格会终止,空格后面的字符串会在缓冲区中,下次获取时会继续用。
gets()函数以回车字符进行标识,获取用户输入字符串以回车为终止符。
scanf和gets函数都是不安全的,如果目标字符串缓冲区无法存储我们输入的字符串,会导致段错误
fgets()函数限定了获取字符串的长度,如果输入字符串过多,依然可以只获取限定长度的字符串,剩下的字符串还在输入缓冲区中。
测试demo以及输入测试描述:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char data[20];
printf("please test of scanf :\n");
scanf("%s", data);
printf("scanf func get data is [%s] \n", data);
memset(data, 0, 20);
printf("please test of space scanf :\n");
scanf("%s", data);
printf("scanf func get data is [%s] \n", data);
memset(data, 0, 20);
fflush(stdin);
printf("please test of gets \n");
gets(data);
printf("gets func get data is [%s] \n", data);
memset(data, 0, 20);
printf("please test of space gets :\n");
gets(data);
printf("gets func get data is [%s] \n", data);
memset(data, 0, 20);
printf("plese test of fgets : \n");
fgets(data, 20, stdin);
printf("fgets func get data is : [%s]", data);
memset(data, 0, 20);
printf("please test of len out of 20 fgets:\n");
fgets(data, 20, stdin);
printf("fgets func get data is : [%s] \n", data);
memset(data, 0, 20);
fflush(stdin);
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)