2016-08-28 2 views
-2

다음 C 프로그램은 문자 수를 계산합니다.C의 문자 계수

#include <stdio.h > 
int main() 
{ 
    int nc = 0; 
    while (getchar() != EOF) 
    { 
     ++nc; 
     printf("%d\n", nc); 
    } 
    return 0; 
} 

내가 터미널에서 예 'Y'에 대해, 문자를 입력, 출력 수익률이 계산이 발생할 않습니다 어떻게

1 
2 

을 다음과 왜 (2) 출력에서와 같이?

+0

긴 문자열을 입력 해보십시오. 내 추측으로는 1 개의 추가 정보가 항상 표시된다는 것입니다 (예 : ABCD를 입력하면 1 2 3 4 5가 표시됨). – FDavidov

+1

당신이 두 개의 문자를 입력했기 때문에 - 아마도 새 줄 아마도 –

+0

나는'y'를 누르지 않았지만 그 후에 다른 문자를 넣었을 것입니다. –

답변

2

2. 출력을 얻을. 올바른 결과를 얻으려면 줄 바꿈 문자를 무시하거나 nc를 하나씩 줄이십시오.

#include <stdio.h> 

int main() 
{ 
    int nc = 0; 
    while (getchar() != EOF) 
    { 
    ++nc; 
    printf("Character count is:%d\n", nc - 1); 
    } 
    return 0; 
} 

더 나은 코드 :

#include <stdio.h> 
int main() 
{ 
    int nc = 0; 
    for(;;) 
    { 
    do 
     ++nc; 
    while (getchar() != '\n'); 
    printf("Character count is:%d\n", nc - 1); 
    nc = 0; 
    } 
} 

만 보이는 바이트를 계산하려면 업데이트 된 코드는 당신이 isprint 기능을 사용할 수 있습니다, 0

+0

왜'... nc = 1;'입니까? – alk

+0

그래, 네 말이 맞아 내가 다른 코드로 코드를 엉망으로 만들었 어. 고마워! 내가 고칠거야. –

+0

'''++ nc;'''. 구.. 제점을 정정하십시오. :) –

3

"문자"를 입력했습니다. A y 및 줄 바꿈 문자. 그게 2입니다.

0

입력하면 수치가 입력됩니다.

1

두자를 입력했기 때문에 입력하십시오. 하나는 y이고 다른 하나는 \n (줄 바꿈) 문자입니다.

은 그러므로 당신은 내가 당신이 알고하지 않았다 생각하지만 누를 때 그냥 개행 문자 또는 '\n'를 삽입 입력 1

0

에 카운터를 다시 초기화됩니다 바이트가 인쇄 가능한지 스페이스 문자인지를 반환합니다. 그것은 이렇게 가고 보낸 사람 C에서는, char는 유니 코드 문자하지만 종종 단지 바이트 아니다

#include <ctype.h> 
#include <stdio.h> 

int main() 
{ 
    int nc = 0; 
    int ch; 

    while((ch = getchar()) != EOF) 
    { 
    if (isprint(ch) && ch != ' ') 
     ++nc; 
    printf("Character count after reading '%c' is %d.\n",ch, nc); 
    } 
    return 0; 
} 

참고 예, 키릴 문자 이모티콘의 경우,이 프로그램은 중국의 2 이상의 바이트와 같은 일부 문자를 계산 표의 문자.