1

通常のテキストを入力と比較しようとしていますが、この特定の条件が発生している場合は何かを印刷したいのですが、そうでない場合は実行を続けてください。

これはコードです:

int main()

{
    int c;
    c = getchar();

    while (c != EOF)

    {
        putchar(c);

        if (c == 'nir')
        {
            printf ("you typed nir");
        }

        c = getchar();
    }
}
4

3 に答える 3

1

文字列と文字を比較しようとしています。getchar を使用する代わりに、文字列を取得してみてください。

char str[100], line[500];

1) fgets を使用して行を読み取ります。

fgets(line,100, stdin)

2) sscanf を使用して文字列を取得します。

sscanf(line,"%s", str);

3) strcmp を使用して文字列を比較します。

if(strcmp(str,"nir") == 0) 
    printf("You entered nir ");
于 2013-01-09T04:53:51.280 に答える
1

質問は少し混乱しすぎて、一度にすべてを答えることができないので、最初から始めましょう。まず、'nir'(もしコンパイルできたとしても) 単一の整数を書くのは非常に奇妙な方法ですが、私はあなた"nir"がテキストの文字列を意味していたと思います。しかし、(c == "nir")コンパイルされませんね。[これはおそらく(c == 'nir')、ランダム ショットとして試みた理由ですよね。ただし、C では意味がありません。]

使用するコンテキストで"nir"は、 はアドレスです。 さて、おそらくこれが何を意味するのか、まだわからないでしょう。また、C でさらに数週間の経験を積むまではわかりません。今日使用できるのは、string.hstrcmp()によって提供される標準ライブラリの関数です。 それを調べてそこから行くことをお勧めします。

'nir'ちなみに、二度と入力しないでください!C では意味がないことを意味します。単一引用符は のような単一の文字'n'を表し、その文字の整数の ASCII 値を表します。

于 2013-01-09T04:55:47.083 に答える
0
main()
{
char c;


int i = 0;
do
{
     c = getchar();
     switch(i)
     {
         case 0: 
               if(c == 'n')
               {
                 i++;
               }
                break;
         case 1: 
               if(c == 'i')
               {
                 i++;
               }
               else
               {
                  i = 0; 
                }
                break;
         case 2: 
               if(c == 'r')
               {
                 printf ("you typed nir");
               }
               i = 0; 
               break;
      }
 }while (c != EOF);
 }

このコードを試してください

于 2013-01-09T06:49:15.723 に答える