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
標準輸入不一定包含行。它可能是一個統一的字符流。在大多數現代操作系統上它是。任何角色都可以在任何位置使用。您的應用程序可能會將其作爲一系列行或完全是其他內容。 –