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;
}
}
如果代码中存在错误,请留言告知,谢谢。
如果对你有帮助,请点个赞。谢谢。