请问s[1]=‘\0’有什么用呢,若表示结束符,那字符串必此处截止?若表示赋值0,s[1]将始终为0了?

程序如下:intgetch(void);voidungetch(int);//getop函数,获取下一个运算符或数值操作数intgetop(chars[]){inti,c... 程序如下:
int getch(void);
void ungetch(int);

//getop函数,获取下一个运算符或数值操作数
int getop(char s[])
{
int i,c;

while((s[0]=c=getch())==' '|| c=='\t ')
; // 忽略空格和TAB.
s[1]=' \0'; /*??有什么用呢??*/
if(!isdigit(c) && c != '.') /*如果c不是数字或小数点,则 终止函数执行,返回c的取值*/
return c; //如果第一个子符不是数字也不是小数点,那么就返回这个字符。这时候上面的s[1]=0就有用了,因为main里要把s当作字符串处理。

i=0;
if(isdigit(c)) //收集整数部分
while(isdigit(s[++i]=c=getch())) /*读取整数部分,读取到非数字为止,并将该数字存放到变量c中*/
;
if(c=='.') //收集小数部分
while(isdigit(s[++i]=c=getch())) /*读取小数部分,读取到非数字为止,并将该数字存放到变量c中*/
;
s[i]=' 0';//此处应为斜杠零,因为编辑器的原因显示的有问题
if(c!=EOF)
ungetch(c); /*将c存入缓冲区中*/
return NUMBER;
}

请大虾们指点一下啊!!
展开
 我来答
旗文墨o
2009-04-07 · 超过12用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:26万
展开全部
因为每次读取,都是将数字读取为字节数组的形式。

其中s[1]='\0'; 就是像注释说的,如果第一个子符不是数字也不是小数点,那么就返回这个字符。这时候上面的s[1]=0就有用了。

这个时候就可以将误读的数据去掉。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式