0

これらの関数がどのように機能するかを理解するのを手伝ってくれる人はいますか? コードには、 while ループ
がある場合とない場合の 2 つの部分があります。

#include <stdio.h>
int main(void) 
{
char z;
z = getchar();
putchar (z);
}

二つ目は

#include <stdio.h>
int main(void)
{
char z;
while (z != '.')
{
z = getchar();
putchar(z);
}
}


問題は、最初のものは適切に機能し、2 番目のものは取得したすべての文字を返すことです (たとえば、入力が2222の場合、関数は2222を返します)。なぜ2を返さなかったのですか?

4

1 に答える 1

0

2 つのバージョンは異なります。

最初のバージョンでは、シングルを読んcharで書きます。

2 番目に、 a がピリオドcharになるまで、a を読み書きし続けます。charピリオドは読み書きされることに注意してください。次のパスのみが無視されます。ただし、注意点があります。を初期化していませんz。コンパイラによっては、\0 に自動的に初期化される場合があります。そうしないと、未定義の動作に直面しています。

于 2016-10-16T21:05:45.900 に答える