zoukankan      html  css  js  c++  java
  • 关于c语言中gets方法的改进

    在软件测试课上老师给出了如下简单代码并让我们对其作出分析

    #include <stdio.h>

    int main(void)

    {

         char buff[10];

         memset(buff,0,sizeof(buff));

         gets(buff);

         printf(“\n The buffer entered is [%s]\n”,buff);

         return 0;  

    }

    看似短小简单的代码,却可能隐藏着令程序崩溃的隐患,我们可以看到,程序首先定义了一个能容纳十个字符的字符数组,然后对其进行了初始化操作,从键盘读入新的字符并且赋值给字符数组,再将其打印出来,但是,在从键盘读入的过程中,用户肯能输入超过十个字符,这样就带来了数组越界的可能性,因而,我们可以自己写一个gets函数,避免这种状况的发生

    char* const Gets(char* const array,int maxlength)
    {
          int i;
          char c;
          for(i=0;i<maxlen;i++)
          {
               c=getchar();
               if(c!='\n')array[i]=c;
               elsebreak;
          }
          array[i]='\0';
          returnarray;
    }

    其中,maxlength为可接受的最大字符长度

  • 相关阅读:
    QinQ基础知识
    mysql执行sql脚本时--force的作用
    docker的thin pool 和 ulimit问题
    使用MAT来进行java内存问题的简单分析
    自己对DHCP的理解
    根据类名找jar包和maven坐标
    curl在windows下和linux中使用的一个区别
    JAVA实现LRU算法
    经典买票并发
    AQS学习
  • 原文地址:https://www.cnblogs.com/huaxiao/p/4337878.html
Copyright © 2011-2022 走看看