# 텍스트 파일 “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 |