>  기사  >  운영 및 유지보수  >  c 언어를 사용하여 wc 명령 작성 - 문자, 단어 및 줄 수 계산

c 언어를 사용하여 wc 명령 작성 - 문자, 단어 및 줄 수 계산

齐天大圣
齐天大圣원래의
2020-10-26 11:26:364798검색

우리는 Linux 운영 체제에서 문자, 단어 및 줄 수를 계산하는 데 사용되는 wc 명령이라는 매우 일반적으로 사용되는 명령이 있다는 것을 알고 있습니다. 오늘은 C 언어를 사용하여 유사한 기능을 가진 프로그램을 작성해 보겠습니다(참고: 이 기사를 읽으려면 C 언어에 대한 특정 기본 지식이 필요합니다).

이 프로그램을 작성할 때 getchar() 및 putchar() 두 가지 함수의 사용법을 숙지해야 합니다.

getchar는 표준 입력에서 문자를 읽는 데 사용되고, putchar는 문자를 표준 출력으로 인쇄하는 데 사용됩니다. 표준 입력 문자 수를 계산하는 것은 비교적 간단합니다. getchar 함수가 문자를 읽을 수 있는 한 문자 수를 계산하는 변수는 1씩 증가합니다. 행 수를 계산하는 것도 간단합니다. 읽은 문자가 개행 문자 n이면 통계 함수의 변수가 1씩 증가합니다.

여기서 가장 어려운 점은 단어 수를 계산하는 방법입니다. 여기서 내 생각은 읽은 문자가 공백 문자(공백, 가로 탭 및 개행 문자는 모두 공백 문자임)인 경우 상태 변수 IN_WORD를 설정하는 것입니다. 는 0이고, 계산된 단어 수는 변하지 않습니다. 공백이 아닌 문자를 읽으면 계산된 단어 수는 1씩 증가합니다. IN_WORD 값은 1입니다. 상태 값이 1이면 공백이 아닌 문자라도 마찬가지입니다. 문자를 읽어도 단어 통계 개수는 변하지 않습니다.

아래에 코드를 게시하세요.

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

#define IN_WORD 1
#define OUT_WORD 0

void main (void)
{
    int nc,nw,nl;
    char c,word_flag;
    
    nc = nw = nl = 0;
    word_flag = OUT_WORD;
    
    while ((c = getchar()) != EOF) {
        nc ++;
        
        if (c == &#39;\n&#39;) {
            nl ++;
        }
        
        if (!isspace(c) && word_flag == OUT_WORD) {
            nw ++;
            word_flag = IN_WORD;
        } else if (isspace(c) && word_flag == IN_WORD) {
            word_flag = OUT_WORD;
        } 
    }
    
    printf("%d\t%d\t%d\n", nc, nw, nl);
}

위의 코드는 여전히 매우 간단합니다. 세 가지 변수 nc, nw, nl은 각각 문자 수, 단어 수, 줄 수를 계산합니다. Word_flag는 상태를 기록하는 데 사용됩니다. 상태에는 IN_WORD와 OUT_WORD의 두 가지 유형이 있습니다.

다음으로 위 코드를 테스트해 보겠습니다. 다음은 텍스트입니다:

Product-minded engineers are developers with lots of interest in the product itself. 
They want to understand why decisions are made, how people use the product, and love to be involved in making product decisions.
They&#39;re someone who would likely make a good product manager if they ever decide to give up the joy of engineering. 
I&#39;ve worked with many great product-minded engineers and consider myself to be this kind of developer. 
At companies building world-class products, product-minded engineers take teams to a new level of impact.

위 텍스트는 총 86단어, 총 5줄로 구성되어 있습니다.

# cat 1.txt | ./a.out 
542 86 5

프로그램에서 문자, 단어, 줄 수를 정상적으로 계산하는 것을 볼 수 있습니다.

위 내용은 c 언어를 사용하여 wc 명령 작성 - 문자, 단어 및 줄 수 계산의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.