我的字符串输入函数

Linux c 下,操作系统不对数组作越界检查,当用字符数组接受字符串时,往往会忽略字符串的长度,所以自己写了一个字符串输入函数。

/**************************************************
 *函 数 名:mygets()
 *函数功能:重键盘输入字符串
 *函数参数:接收地址 和 字符串长度
 *作    者:老猫 c.c
 *说    明:数组接收字符串作越界保护 
 * ************************************************/
int mygets(char *p, int len)
{
    int i ;

    for(i = 0; i < len ; i++)   //最多从输入缓存区读入 len 个字符
    {
        p[i] = getchar();
        if(p[i] == '\n')        //有回车时停止读入 否则读入len个 需要判断最后一位
        {
            break;
        }
    }

    if(i == len && p[i-1] != '\n')      //最后一个不是回车 若要形成字符串则越界 
    {
        printf("输入长度出错!操作无效!\n请重新输入:");
        while(getchar() != '\n');       //清空输入缓存区
        return -1;
    }
    else                       // else 越界之前有回车结束输入
    {
        p[i] = '\0';           //将回车改为结束标志 令读入的字符成串
        return 0;
    }
}

如果代码中存在错误,请留言告知,谢谢。 

如果对你有帮助,请点个赞。谢谢。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值