줄 단위로 텍스트 파일을 읽길 원하지만 흰색 줄에는 관심이 없습니다. 빈 줄을 건너 뛰는 좋은 방법이 있습니까? 비어있는지를 확인하고, 비어있는 지 확인하고, 좋은 라인에 도달 할 때까지 줄을 읽을 수는 있지만, 다른 방법이 있는지 궁금합니다.텍스트 파일을 읽는 동안 흰 선을 건너 뛰는 방법은 무엇입니까?
1
A
답변
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을 사용하면 빈 줄이 자동으로 잘립니다.