我到处搜索,但我找不到答案!我正在使用他们称之为getop的功能从K& R C书籍开始练习。当我输入例如123时,代码检查输入的每个元素,并在它不是数字时停止。在这个例子中它是' \ n&#39 ;;它是否取消了(' \ n')?
int getop(char s[])
{
int i, c;
while ((s[0] = c = getch()) == ' ' || c == '\t')
;
s[1] = '\0';
if (!isdigit(c) && c != '.')
return c; /* not a number */
i = 0;
if (isdigit(c)) /*collect integer part*/
while (isdigit(s[++i] = c = getch()))
;
if (c == '.') /*collect fraction part*/
while (isdigit(s[++i] = c = getch()))
;
s[i] = '\0';
if (c != EOF)
ungetch(c);
return NUMBER;
}
ungetch功能:
void ungetch(int c) {
if(bufp < MAXBUF) {
printf("ungetch has been called\n");
buf[bufp++] = c;
}
else
printf("the buffer is full\n");
}
答案 0 :(得分:0)
我认为eof用于窗口ctrl + z,'\ n'是东西 否则......?
ISO / IEC 9899 ,编程语言 - C :
EOF
...扩展为整数常量表达式,类型为int和 一个负值,由几个函数返回以指示 文件结束,即不再有来自流的输入
Windows上的Ctrl-Z是一个输入组合键,不会再返回任何字符,甚至不会返回与Ctrl-Z(0x1A)等效的字符。
\n
(新行)将有效位置移动到初始位置 下一行。
关于原始问题:由于负值EOF
与任何(unsigned char)
值不同,是的,此代码执行ungetch()'\n'
。