从安全的角度来讲,scanf和gets是不推荐的,因为两个函数不对输入的长度进行核查,即使用户输入超过了规定的buffer容量,函数也会接受输入,造成缓冲区溢出,程序崩溃。推荐用:fgets函数
scanf在获取用户输入的字符串时,遇到空格、制表符立刻终止,并在结尾自动加上”\0″,例如输入“I am a boy.”,则只会接受字母I,后面的字符串会被丢弃。
gets在获取用户输入字符串时,遇到空格、制表符不会终止,在结尾也会自动加上“\0”
fgets函数是推荐使用的,它要求必须提供buffer容量作为参数,在结尾时会自动添加”\n”(换行符),如果用户输入超出了容量会被自动截取并舍弃,由于“\n”也要占用1个字节,所以如果定义buffer大小为1,则禁止用户输入内容。
fgets的用法:
char buf[1024];
fgets(buf, sizeof(buf), stdin);
//buf[strlen(buf) – 1] = ‘\0’; //如果想让末尾是\0而不是换行符\n,添加此行代码替换即可
printf(“buf is %s\n”, buf);