zoukankan      html  css  js  c++  java
  • scanf和fgets比较

    scanf

    长度限制

    #include<stdio.h>
    int main()
    {   
        char food[5]; 
        printf("Enter food");
        scanf("%5s",food); //如果输入内容过长,则获取前5位字符串,
        printf("enter food is:%s
    ",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()。

  • 相关阅读:
    SVN的学习
    IIS 503 错误
    Windows系统CMD下常用命令
    Linux基础整理
    JavaEESSM框架配置文件
    JavaXML整理
    Java反射、反射练习整理
    Java网络通信协议、UDP、TCP类加载整理
    Java多线程、线程池和线程安全整理
    JavaProperties类、序列化流与反序列化流、打印流、commons-IO整理
  • 原文地址:https://www.cnblogs.com/c-x-a/p/11526449.html
Copyright © 2011-2022 走看看