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

  • 相关阅读:
    数据类型的总结
    typeof加括号和不加括号的区别
    排序
    数据类型分为哪两类
    css中需要更小的字体如何实现
    一些细节注意点
    数值转换题
    如何用分支结构计算年份
    Scout YYF I
    D. AND, OR and square sum
  • 原文地址:https://www.cnblogs.com/huaxiao/p/4337878.html
Copyright © 2011-2022 走看看