为什么getop()这个函数不用检查s数组是否越界 i++的时候不用加个条件吗

int getop(char s[])
{
int i, c;
while ((s[0] = c = getch()) == ' '|| c == '\t')
; //如果是空格或者制表符,跳过;
s[1] = '\0'; //如果不是空格或者制表符,把字符赋给c并且保存在
// s[0]中,把s[1]置为结束符,因为数组s是以’\0’结尾的
if (!isdigit(c) &&c != ‘.’)
return c; //如果c不是数字也不是点,返回c(c为操作符)
i = 0;
if (isdigit(c)) //c是整数的情况
while (isdigit(s[++i] = c = getch()))
; //把下一个字符赋给s[1],直到字符不为数字为止
if (c == ‘.’ ) //如果是小数点的情况
while (isdigit(s[++i] = c = getch()))
; //收集小数部分
s[i] = ‘\0’; //赋给结束符’\0’;
if (c != EOF) //如果不是结束符的话,返回c
ungetch(c);
return NUMBER; //返回数字的标识
}

只要调用该函数的实参数组足够大,不检查s数组是否越界是可以的。当然,从程序的健壮性考虑,应该对s数组进行越界检查。
温馨提示:内容为网友见解,仅供参考
无其他回答

getop()是个什么涵数
你说的这个getop()函数,不是标准库中的函数,应该是《the c programming language》这本书中的一个例子当中的函数,它的作用是读取一个数值,下面是它的原代码:int getop(char s[]){ int i, c;while ((s[0] = c = getch()) == ' '|| c == '\\t'); \/\/如果是空格或者制表符,...

为什么编译的时候会出现这个错误warning C4028: formal parameter 1...
有重复声明的函数,如double atof(char s[]),把这个改个名,这个告警不会有了

相似回答
大家正在搜