程序猿
讲互联网的故事

c语言中scanf、gets和fgets的用法总结

从安全的角度来讲,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);

 

 

赞(0) 打赏一下

评论 抢沙发

觉得文章有用就打赏一下博客作者

支付宝扫一扫打赏

微信扫一扫打赏