zoukankan      html  css  js  c++  java
  • gets函数的完美替代

    众所周知 在C语言中scanf用来读取一行字符串时遇到空格或回车会停止

    而若要读入一行带空格的字符串时 有些人会用gets来代替

    然而,gets的最大问题在于:会读取超过数组长度上限个字符,而超出长度的字符会被读进其他未被分配的内存空间,如果这段空间已经有了数据,就会导致程序错误而中断

    正是由于此缺陷,在C11标准中直接抛弃了gets,这个时候我们可以用fgets来替代gets

    我们先看一下函数原型声明:
     

    char *fgets(char *buf, int bufsize, FILE *stream);

    可以看出fgets主要用来读取文件,若要读取键盘的话stream参数应为stdin
    bufsize参数为能够读取的最大上限(值得注意的是,若该参数为n,则最多能读取n-1个字符)
    将一直读取到换行符为止(包括换行符
    故我们往往人为的将最后一个换行符转化为结束符
    例如:

  • 相关阅读:
    The Chinese Postman Problem HIT
    Chinese Postman Problem Aizu
    矩阵游戏 HYSBZ
    最大获利 HYSBZ
    asp.net+MVC--1
    -----IT男生涯————初始篇
    Permutation
    RMQ with Shifts
    Fast Matrix Operations
    "Ray, Pass me the dishes!"
  • 原文地址:https://www.cnblogs.com/chr1stopher/p/10533108.html
Copyright © 2011-2022 走看看