我是靠谱客的博主 调皮故事,最近开发中收集的这篇文章主要介绍scanf和fgets比较,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

scanf

长度限制

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

fgets

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

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

}

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

比较

1、是否限制用户输入的字符数?
scanf:可以在格式字符串指定长度。
fgets:强制用户输入字符的长度
2、是否支持多字段输入
scanf:可以接受多个字段,并且支持结构化数据的输入。
fgets:只允许输入一个字符串。
3、字符串中是否可以有空格
scanf:用%s读取字符串的时候,遇到空格停止,如果想要输入多个单词,就需要多次调用scanf。
fgets:可以读取整个字符串。

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

转载于:https://www.cnblogs.com/c-x-a/p/11526449.html

最后

以上就是调皮故事为你收集整理的scanf和fgets比较的全部内容,希望文章能够帮你解决scanf和fgets比较所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部