#include <stdio.h>
int main(){
char testChar;
printf("%d\n", scanf("%c", &testChar));
return 0;
}
私が望んだのは、スキャンした文字数を印刷することでした。しかし、すべての入力が同じ出力、すなわち1であるとき。このコードがすべての入力に対して「1」を印刷しているのはなぜですか?
#include <stdio.h>
int main(){
char testChar;
printf("%d\n", scanf("%c", &testChar));
return 0;
}
私が望んだのは、スキャンした文字数を印刷することでした。しかし、すべての入力が同じ出力、すなわち1であるとき。このコードがすべての入力に対して「1」を印刷しているのはなぜですか?
scanf()
は、スキャンに成功したアイテムの数を返します。だから、すべての実行でscanf()
は成功しましたので、あなたのプログラムのプリント1. scanf()
から
:成功し
は、これらの機能は がうまくマッチし、割り当てられた入力項目の数を返します。早期のマッチングに失敗した場合には、 の数より少なく、またはゼロにすることもできます。
最初に変換が成功するか、一致するエラーが発生する前に入力の終了に達すると、値EOFが返されます。読み取りエラーが発生した場合は、 ストリームのエラーインジケータ(ferror(3)参照)が設定され、 エラーを示すようにerrnoが設定されている場合、EOFも です。
scanf()
only scans your first character input and returns 1.
あなたはstdin
から読み込まれた文字の数を印刷し、これを試すことができます。ループの中でscanf
を使用する。
#include <stdio.h>
#include <stdlib.h>
int
main(void) {
char testChar;
int numchar = 0;
printf("Enter characters, CTRL-C to end:\n");
while (scanf("%c", &testChar) == 1) {
numchar++;
}
printf("Number of characters scanned: %d\n", numchar);
return 0;
}
はい、1文字をスキャンしたためです。 – melpomene
'scanf'のドキュメントを読んでみたいかもしれません。あなたは少なくとも尋ねる前にマイナーな研究をしなければなりません! – Olaf