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为可接受的最大字符长度

  • 相关阅读:
    centos 部署.NET CORE
    nginx 负载均衡
    graylog centos7 部署
    springboot 2.x centos 7.0 部署
    HashMap源代码阅读理解
    服务器安装redis
    java ---- gradle
    uboot-makefile总览
    makeFile
    Spring 推断构造方法
  • 原文地址:https://www.cnblogs.com/huaxiao/p/4337878.html
Copyright © 2011-2022 走看看