2016-10-20 1 views
0
#include <stdio.h> 

int main(){ 
    char testChar; 

    printf("%d\n", scanf("%c", &testChar)); 

    return 0; 
} 

私が望んだのは、スキャンした文字数を印刷することでした。しかし、すべての入力が同じ出力、すなわち1であるとき。このコードがすべての入力に対して「1」を印刷しているのはなぜですか?

+2

はい、1文字をスキャンしたためです。 – melpomene

+0

'scanf'のドキュメントを読んでみたいかもしれません。あなたは少なくとも尋ねる前にマイナーな研究をしなければなりません! – Olaf

答えて

2

scanf()は、スキャンに成功したアイテムの数を返します。だから、すべての実行でscanf()は成功しましたので、あなたのプログラムのプリント1. scanf()から

:成功し

は、これらの機能は がうまくマッチし、割り当てられた入力項目の数を返します。早期のマッチングに失敗した場合には、 の数より少なく、またはゼロにすることもできます。

最初に変換が成功するか、一致するエラーが発生する前に入力の終了に達すると、値EOFが返されます。読み取りエラーが発生した場合は、 ストリームのエラーインジケータ(ferror(3)参照)が設定され、 エラーを示すようにerrnoが設定されている場合、EOFも です。

1
scanf() 
    only scans your first character input and returns 1. 
0

あなたは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; 
} 
関連する問題