私は、ユーザーの入力に名前を入力するよう要求するコードを書こうとしています。それで、名前のそれぞれの文字を読み、それをフォーマットすることになっています(以下のコードでは、各文字の後に改行が追加されます)。文字列の最初の文字が印刷されないのはなぜですか?
私が抱えている問題は、誰かが名前を入力したときに、最初の文字は印刷されずに残りの部分が印刷されるということです。
たとえば、私がSneekを入力すると、それはneekしか表示されません。
私はプログラミングの初心者であり、さらにC言語のため、scanf文やループに問題があるかどうか疑問に思っていました。
また、私はSneekを入力するとneekと表示されますが、もう一度Sneekを入力するとSneekと表示されるので、ループに何も間違っているとは思いませんか?
私はこの問題についてかなりの間検索しましたが、私は答えを見つけることができないようです。どんな助けでも大歓迎です。
char ch;
printf("Please enter name: ");
ch = scanf("%c", &ch);
while ((ch = getchar()) != EOF) {
printf("%c\n", ch);
}
return 0;
http://stackoverflow.com/questions/35356322/difference-between-int-and-char-in-getchar-fgetc-and-putchar-fputc – Lundin
'getchar'意図的に、' int'を返します'char'ではなく! 'ch = scanf(...、&ch)'は間違っています。使用する関数のドキュメントを読んでください! – Olaf