2014-04-19 2 views
0

파일에서 한 줄씩 읽고 strtok을 사용하여 각 단어를 읽으려고합니다. 그러나 공백 만있는 * 또는 행으로 시작하는 빈 줄 또는 줄을 무시해야합니다. 내 코드는 다음과 같습니다.C *로 시작하는 줄을 무시하는 방법 또는 공백 만있는 경우

char line[len]; 
while (fgets(line, sizeof(line), input)) { 
    char* words= strtok(line," "); 
     //MY FIRST TRY TO FIND EMPTY LINES 
    if(strcmp(line," ") == 0){ 
     continue; 
    } 
    int i=0; 
    while(words != NULL){ 
      //MY SECOND TRY TO SKIP EMPTY WORDS 
     while(words[i] == ' ' && words[i] != '\0'){ 
      i++; 
     } 
     if(words[i] != '\0'){ 
      fprintf(output,words); 
     } 
     i=0; 
     words=strtok(NULL," "); 
    } 
} 

두 가지 시도가 모두 실패했습니다.

+1

'if (strcmp (line, "") == 0)'빈 줄을 찾지 못하면 정확히 하나의 공백이있는 줄을 찾습니다. 아마도 당신은 당신의 의견을 보여 주어야합니다. – hetepeperfan

+0

'strtok'을하기 전에 당신의 삶을 훨씬 더 편하게 만들고 빈 공간, 모든 공백과 줄을 제거하십시오. – Duck

답변

2

당신은 공백 문자로 시작하는 줄을 건너 뛸하기 위해 while 루프의 시작 부분에 다음 코드를 삽입 한 후 '*'또는 빈 줄 수 :

for (i = 0; line[i] && isspace(line[i]); i++) 
    ; 

if (line[i] == '*' || line[i] == '\0') 
    continue; 

참고 : 첫 번째 i을 정의하기 위해 기억하고 <ctype.h> 포함 소스 파일의 시작 부분에.

+0

감사! 완벽하게 작동합니다! – Michael

관련 문제