2016-10-20 3 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()에서

: 성공

,이 기능은 이 성공적으로 일치하고 할당 된 입력 항목의 수를 반환; 조기 매칭이 실패한 경우이 값은 보다 작거나 0 일 수도 있습니다.

첫 번째 성공적인 변환 또는 일치하는 오류가 발생하기 전에 입력 끝나면 값 EOF가 반환됩니다. 읽기 오류가 발생하면 이 반환되고,이 경우 스트림의 오류 표시기 (ferror (3) 참조)가 설정되고 errno가 오류를 나타내도록 설정됩니다.

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; 
} 
관련 문제