2012-09-22 3 views
0

사전 파일을 한 줄씩 읽고 각 줄을 가져 와서 문자열과 비교합니다. 내 문제는 공백을 제거하기 위해 모든 줄에 문자열의 길이를 동적으로 할당하는 방법을 모른다는 것입니다.사전 파일을 한 줄씩 읽는 것은 공백이 많은 문자열을 사용합니다.

FILE *f; 
f = fopen("/usr/share/dict/words", "r"); 
if (f != NULL) 
{ 
    // maximum size of line, keep it at 128 just in case 
    char line[128] = ""; 

    // run through every line of file 
    while (fgets(line, sizeof(line), f)) 
    { 
     if (strcmp("hello", line) == 0) 
      printf("The string is %s!", line); 
    } 
} 

그래서 내가 어떤 라인의 최대 길이를 적용하려면 "라인"변수를 초기화해야한다 : 당신이 내 코드를 본 후에 나는 이것을 설명 할 것이다. 줄의 길이가 128보다 작 으면 끝 부분에 공백을 추가하기 때문에 잘못된 비교가됩니다. 어떻게 변경합니까?

답변

1

아니요, 많은 공백을 추가하지는 않지만 fgets은 버퍼에 개행을 남겨 둡니다. 따라서 공백 문자 하나가 일반적으로 있습니다. 해결 방법

int len = strlen(line); 
if (line[len-1] == '\n') { 
    line[len-1] = 0; 
} 
+0

어떻게 해결해야합니까? 또한 버퍼를 사용하는 더 좋은 방법이 있습니까? – Ray

+0

답변을 수정하십시오. "더 나은 방법"이란 무엇을 의미합니까? 그것이 사용되는 방식은 좋습니다. –

+0

오, 알겠습니다. 그냥 궁금해. – Ray

관련 문제