2011-04-26 3 views
1

나는 정수 파일을 읽습니다. 각 줄의 정수를 새로운 배열에 저장하고 싶습니다. 이를 위해 파일의 새로운 라인을 감지하고 싶습니다. 아무도 이걸 알면 도와주세요.C 프로그램을 사용하여 파일의 새 줄을 감지하는 방법

1 2 4 5 6 
7 3 2 5 
8 3 
9 7 6 2 
+0

음, 지금까지 무엇을 가지고 계신가요? 파일을 열고 읽는 방법을 알고 있습니까? 한 번에 한 줄씩 읽는 법을 알고 있습니까? –

+1

['fgets()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/fgets.html)은 입력 스트림에서 ** lines **을 읽습니다. 그것과 ['sscanf()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/scanf.html)을 사용하십시오. – pmg

답변

2
#include <stdio.h> 
int main (int argc, char **argv) { 
    FILE *fp = fopen ("d:\\abc.txt", "r"); 
    char line[1024]; 
    char ch = getc (fp); 
    int index = 0; 
    while (ch != EOF) { 
     if (ch != '\n'){ 
      line[index++] = ch; 
     }else { 
      line[index] = '\0'; 
      index = 0; 

      printf ("%s\n", line); 
     } 
     ch = getc (fp); 
    } 


    fclose (fp); 

    return 0; 
} 
+0

이 프로그램에서 일부 세분화 오류가 있습니다 ... 이유를 찾으려고합니다. –

+0

세그멘테이션 오류가 발생하지 않습니다. 줄 수는 1024로 제한되어 있습니다.이 예제 코드는 확장 할 수 있습니다 더 나아. – Avinash

+0

줄 수가 4 ~ 5 개 미만입니다 ... –

8

왜 파일에서 한 번에 하나 개의 라인을 얻을 수 fgets()을 사용하여 다음과 같이

읽을 수있는 파일은? 그런 다음 fscanf() 대신 sscanf()을 사용하여 정수를 추출 할 수 있습니다.

+0

시스템 호출 수가 각 문자 하나가 아닌 각 행 하나씩으로 줄어들 기 때문에 이는 매우 유용한 조언입니다. 성능에 아주 좋습니다! – oysteijo

-1

당신이 다음에 입력 한 줄을 읽어 '32'와 '입력' '13'에 의해 및/또는과 '10'

+0

ASCII 값을 절대 하드 코딩하지 마십시오. 공백으로는 '', 줄 바꿈에는 \ n ', 캐리지 리턴에는'\ r '과 같은 문자 상수를 사용하십시오. 또한 그것이 의미하는 것이면 isspace()를 사용하십시오. – unwind

0

사용 fgets()을 공백을 인식 문자로 문자를 읽고 사용하는 경우 시각. 그런 다음 strtol()을 사용하여 정수를 구문 분석하고 "끝 포인터"기능을 사용하여 다시 시도 할 위치를 파악한 다음 모든 값을 파싱 할 때까지 반복합니다.

0

이 작업에 getc()을 사용하면 문제가 없지만 getc() 반환 유형이 int임을 잊지 마십시오. 문자를 다시 입력하면 "작동"되지만 EOF = -1 = 0xFF (대부분의 C 컴파일러에서) 문자로 다시 입력 한 후에 0xFF 문자가 EOF으로 감지되므로 비 ASCII 입력 파일에 문제가있을 수 있습니다.

0
#include<stdio.h> 
void main() 
{ 
    FILE *p; 
    int n; 
    int s=0; 
    int a[10]; 
    p=fopen("C:\\numb.txt","r"); 
    if(p!=NULL) 
     printf("file opened"); 

    while((n=getc(p))!=EOF) 
    { if(n!=NULL && n!='\n') 
     { 
     printf("\n%d",n); 
     a[s]=n; 
     ++s; 
     } 
    } 
fclose(p); 
getchar(); 
} 

변환 할 int와 변환 할 수없는 것이 확실하지만 프로그램이 0이 아닌 숫자로 작동합니다. 나는 시각적 인 기초에 노력했다.

관련 문제