파일안의 a로 시작하는 단어갯수 세는 프로그램인데요
글쓴이: cbers / 작성시간: 목, 2006/01/19 - 1:31오후
#include <stdio.h> int main(int argc, char **argv) { char temp1, temp2, temp3=0; FILE* file=fopen(argv[1], "r"); int count_a=0, count_b=0; if(file==NULL){ puts("file open error"); return 1; } while(1) { temp1=fgetc(file); if(feof(file)!=0) break; else if(temp1==' ' || temp1=='\t' || temp1=='\n') { temp2=fgetc(file); if(temp2=='a' || temp2=='A') { while(temp3!=' ' && temp3!='\t' && temp3!='\n') temp3=fgetc(file); count_a++; temp3=0; } if(temp2=='b' || temp2=='B') { while(temp3!=' ' && temp3!='\t' && temp3!='\n') temp3=fgetc(file); count_b++; temp3=0; } else continue; } else continue; } fclose(file); printf("A(a):%d\n", count_a); printf("B(b):%d\n", count_b); return 0; }요
그니까 제가 하고자한건 일단 fgetc로 문자를 계속 입력받습니다
그러다가 공백이 입력되면(단어의 구분기준은 공백이니까) 공백 바로다음의 문자를 입력받아 그것이 a,A 나 b,B 면 count_a나 count_b를 ++; 시키고
다시 계속 진행하는건데요..
count_a 는 잘나오는데 count_b 의 값이 계속 0인걸 보면
if문에서 뭔가 문제가 있나봅니다;; 지적좀해주세요..부탁드립니다
Forums:
[url=http://www.cinsk.org/cfaqs/html/nod
C FAQ: 12.2를 한 번 읽어 보시기 바랍니다. 또한 temp3에 값을 받는 while loop에서 EOF 검사를 하지 않는 버그도 고치기 바랍니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
더불어 temp1, temp2, temp3를 int로 선언해야 합니다.
더불어 temp1, temp2, temp3를 int로 선언해야 합니다.
그 이유는 C FAQs Q12.1에...
그런데 fscanf()와 %s를 쓰는 게 훨씬 쉽겠네요.
또 제대로 단어를 카운트하려면..[code:1].... ....
또 제대로 단어를 카운트하려면..
와 같이 줄에 걸쳐 있는 것도 고려하는 것이 품질 향상에 도움이 됩니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기