0

私は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)のために使われますか?

これが些細な質問である場合は申し訳ありません。前もって感謝します。

4

1 に答える 1