본문 바로가기
대학교/3.시스템프로그래밍

시스템 프로그래밍 Project #2

by Jcoder 2017. 10. 29.

텍스트 파일 "sample.s"를 open하여 숫자 단어, 알파벳 단어, 기타 단어 등 총 세 종류의 단어 수를 각각 카운트 하여 출력

  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h >
#include <string.h >
#include <stdlib.h >
#include <ctype.h >
void get_token_num(char *bp);
int eng = 0, num = 0, etc = 0;
int main()
{
    FILE *fp;
    char buf[80];
 
    if ((fp = fopen("sample.s""r")) == NULL) {
        fprintf(stderr, "file not found...\n"); exit(1);
    }
    while (fgets(buf, sizeof(buf), fp) != NULL) {
        get_token_num(buf);
    }
    fclose(fp);
    printf("영어단어개수 = %d\n숫자단어개수 = %d\n기타단어개수 = %d\n", eng, num, etc);
    return 0;
}
void get_token_num(char *bp)
{
    char *cp;
    int n, n1, n2;
    for (cp = strtok(bp, " \t\n"); cp != NULL; ) {
        n = 0, n1 = 0, n2 = 0;
        for (int i = 0; i < strlen(cp); i ++)
        {
            if (isdigit(cp[i]))    //숫자면 n 증가
            {
                n += 1;
            }
            else if (isalpha(cp[i])) //영어면 n1 증가
            {
                n1 += 1;
            }
            else    //기타면 n2 증가
            {
                n2 += 1;
                break;
            }
        }
 
            if (n ==strlen(cp))    //n이 길이만큼이면 숫자이니 num 카운트 증가
            {
                num += 1;
            }
            else if (n1 == strlen(cp))//n1이 길이만큼이면 영어이니 eng 카운트 증가
            {
                eng += 1;
            }
            else //n2이 길이만큼이면 숫자이니 etc 카운트 증가
            {
                etc += 1;
            }
        cp = strtok(NULL" \t\n");
    }
}
Colored by Color Scripter
cs



시스템프로그래밍project2.hwp

project2.c

sample.s