int getop(char s[])
{
int i = 0, c, next;
/* Skip whitespace */
while((s[0] = c = getch()) == ' ' || c == '\t')
;
s[1] = '\0';
/* Not a number but may contain a unary minus. */
if(!isdigit(c) && enter code herec != '.' && c != '-')
return c;
if(c == '-')
{
next = getch();
if(!isdigit(next) && next != '.')
return c;
c = next;
}
else
c = getch();
while(isdigit(s[++i] = c)) //HERE
c = getch();
if(c == '.') /* Collect fraction part. */
while(isdigit(s[++i] = c = getch()))
;
s[i] = '\0';
if(c != EOF)
ungetch(c);
return NUMBER;
};
如果没有空格或制表符,s [0]将初始化的值是什么.......& s [1] =' \ 0'
的用途是什么答案 0 :(得分:1)
如果没有空格或标签比s [0]初始化的值
以下循环将继续执行,直到getch()
返回既不是空格也不是标签的字符:
while((s[0] = c = getch()) == ' ' || c == '\t')
;
s [1] ='\ 0'
的用途是什么
它会将s
转换为长度为1的C string,其中唯一的字符已由getch()
读取。 '\0'
是必需的NUL终止符。
答案 1 :(得分:0)
如果没有空格或制表符,则会遇到无限循环。
s [1] ='\ 0'是一种标记结尾的方式,所以像strlen()这样的函数 知道何时停止读取c字符串。它被称为“Null-Terminating”字符串:http://chortle.ccsu.edu/assemblytutorial/Chapter-20/ass20_2.html
答案 2 :(得分:0)
while((s[0] = c = getch()) == ' ' || c == '\t')
读取字符,直到它不是标签或空格。
s[1] = '\0';
将char数组转换为C格式的正确字符串(c中的所有字符串必须以空字节终止,该字节由'\ 0'表示。