본문 바로가기

ASSEMBLY

System Software _ project 2

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

 

[실행결과]

-smple2.c

 

단어를 int get_token_num()함수로부터 받아오면 우선 거기에 특수문자가 있는지 한 문자 씩 검열하여 문자가 속해있는지 판별해 etc를 더해준다. 이게 아니면 또 맨 앞 글자만 비교하여 그 단어가 숫자 혹은 문자로 이루어져 있는지를 판별한다.

 

<소스코드>

#include <stdio.h> /* project #1 : 텍스트 파일내 단어의 총 수를 카운트*/

#include <string.h>

#include <stdlib.h>

int get_token_num(char *bp,int *alpha,int *etc);

int main() {

             FILE *fp;

             char buf[80];

             int num;

             int alpha=0;

             int etc=0;

             if ((fp = fopen("sample.s", "r")) == NULL) {

                           fprintf(stderr, "file not found...\n"); exit(1);

             }

             while(fgets(buf, sizeof(buf), fp) != NULL) {

                          num+= get_token_num(buf,&alpha,&etc);

             }

             fclose(fp);

             printf("Numb of token = %d\nAlpha of token = %d\nEtc of token = %d\n", num,alpha,etc);

}

int get_token_num(char *bp,int *alpha,int *etc)

{

             int num=0;

             char *cp;

             int i;

             int a=0;

             for(cp = strtok(bp, " \t\n"); cp != NULL; ) {

                           int len = strlen(cp);

                           for(i=0;i<len; i++){

                                        if(33<=cp[i]&&47>=cp[i]){

                                                     a = 1;

                                        }

                           }

                           if(a==1)

                                        *etc = *etc+1;

                 else if('0'<=cp[0] && cp[0]<='9'){

                                        num++;  //숫자로 이루어진 단어의 갯수

                           }

                           else if(65<=cp[0]&&90>=cp[0])

                                        *alpha = *alpha+1;  //알파벳단어의 갯수

 

                           cp = strtok(NULL, " \t\n");

             }

             return (num);

}

'ASSEMBLY' 카테고리의 다른 글

System Software _ project 5  (0) 2019.06.26
MAKING ASSEMBLYSYSTEM SOFTWARE  (0) 2019.06.26
System Software _ project 4  (0) 2019.06.26
System Software _ project 1  (0) 2019.06.26