scanf和fgets比较

scanf

长度限制

#include<stdio.h>
int main()
{
char food[5];
printf("Enter food");
scanf("%5s",food); //如果输入内容过长,则获取前5位字符串,
printf("enter food is:%s\n",food);
/* code */
return 0;
}

fgets

fgets接收char指针,强行限制用户输入字符串的长度

#include<stdio.h>
int main(){
char food[5]
printf("Enter favorite food:")
//food指针,接受字符串最大长度包括(\0),stdin表示数据来自键盘。
fgets(food, sizeof(food), stdin); }

这里food是数组变量所以可以通过sizeof获取数组的大小,如果food是个指针那么就需要手动指定长度了。

比较

1、是否限制用户输入的字符数?

scanf:可以在格式字符串指定长度。

fgets:强制用户输入字符的长度

2、是否支持多字段输入

scanf:可以接受多个字段,并且支持结构化数据的输入。

fgets:只允许输入一个字符串。

3、字符串中是否可以有空格

scanf:用%s读取字符串的时候,遇到空格停止,如果想要输入多个单词,就需要多次调用scanf。

fgets:可以读取整个字符串。

综上:如果需要输入由多个字段构成的结构化数据,可以使用scanf();而如果想要输入一个非结构化的字符串,可以使用fgets()。

上一篇:C语言输入语句scanf与fgets linux下


下一篇:详细解说Windows 8.1与Windows 8的区别(Win8.1与Win8区别)