0
我正在学习C编程语言。什么是如果(C!= EOF)用于反向波兰计算器
在下面的代码
#include <ctype.h>
int getch(void);
void ungetch(int);
int getop(char s[])
{
int i, c;
while((s[0] = c = getch()) == ' ' || c == '\t')
;
s[1] = '\0';
if(!isdigit(c) && c != '.')
return c;
i = 0;
if (isdigit(c))
while (isdigit(s[++i] = c = getch())) ;
if(c == '.')
while (isdigit(s[++i] = c = getch())) ;
s[i] = '\0';
if(c != EOF)
ungetch(c);
return NUMBER;
}
#define BUFSIZE 100
char buf[BUFSIZE];
int bufp = 0;
int getch(void)
{
return (bufp > 0) ? buf[--bufp] : getchar();
}
void ungetch(int c)
{
if (bufp >= BUFSIZE)
printf("ungetch: too many characters\n");
else
buf[bufp++] = c;
}
我想声明if(c != EOF)
在getop()
是不必要的。
在标准输入中,每行由零个或多个字符组成,后跟一个换行符。
当语句执行时,c取出的数字后面跟着一个数字字符或.
,其中c可以是换行符或除EOF
以外的其他字符。
很明显,c
不是EOF
没有测试。
什么是if(c != EOF)
用于?
对不起,如果这是一个微不足道的问题。 在此先感谢。
我想它是'EOF c!= if'。 –
标准输入不保证以换行符结束。只需在行的中间按^ D(在UNIX/Linux上)。 – Chris
标准输入不一定包含行。它可能是一个统一的字符流。在大多数现代操作系统上它是。任何角色都可以在任何位置使用。您的应用程序可能会将其作为一系列行或完全是其他内容。 –