私はCプログラミング言語を学んでいます。
以下のコードで
#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)
inの記載getop()
は不要だと思います。
標準入力では、各行は 0 個以上の文字とそれに続く改行文字で構成されます。
ステートメントが実行されると、c がフェッチしたものが数字文字または a の.
後に続きます。この場合、c は改行文字または を除く他の文字である可能性がありますEOF
。
テストなしでc
はないことは明らかです。EOF
何if(c != EOF)
のために使われますか?
これが些細な質問である場合は申し訳ありません。前もって感謝します。