2011-10-22 4 views

답변

2

나는 당신의 방법이 충분하다고 생각합니다. 기술적으로는 단지 공백인지 체크해야합니다 :-) fscanf (숙제 문제에 많이 사용됨)을 사용하는 경우, 흰색 선을 건너 뛰는 것은 "가격에 포함되었습니다"라는 뜻입니다 :-) 그리고 " 이 줄은 내 버퍼보다 ​​큽니다. 어떻게해야합니까? "

0

일반적인 개념은 괜찮습니다 ... 줄 단위로 읽고 공백 문자가 아닌지 확인하십시오. 라인으로 독서 라인 '\ n을'의 간단한 검사를 사용하는 경우에도 실제 OS 뉴 라인 경우 (컴파일러가 처리됩니다

#include <stdio.h> 
#include <string.h> 

int is_blank_line(const char *line) { 
    const char accept[]=" \t\r\n"; /* white space characters (fgets stores \n) */ 
    return (strspn(line, accept) == strlen(line)); 
} 

int main(int argc, char *argv[]) { 

    char line[256]; /* assuming no line is longer than 256 bytes */ 
    FILE *fp; 

    if (argc < 2) { 
     fprintf(stderr, "Need a file name\n"); 
     return -1; 
    } 

    fp = fopen(argv[1], "r"); 

    if (!fp) { 
     perror(argv[1]); 
     return -1; 
    } 

    while (!feof(fp)) { 
     fgets(line, sizeof(line), fp); 
     if (is_blank_line(line)) { 
      continue; 
     } 
     printf("%s", line); 
    } 

    return 0; 
} 
0

: 그것은 검사의 공정 최적의 방법은 예를 들어 ... strspn을 사용하는 것입니다 \ r \ n). fread를 사용하여 전체 파일을 읽는 경우 sep = '\ n'을 사용하여 줄을 나누기 위해 strtok 또는 strtok_r을 사용하면 빈 줄이 자동으로 잘립니다.

관련 문제