2016-12-16 1 views
-1

저는 코딩에 익숙하지 않아 파일을 여는 데 어려움이 있습니다.c로 텍스트 파일 읽기

20 
110 
1 0 1 5 
5 6 7 8 

을 그리고 여기 내가 그것을 읽고 쓴 코드입니다 : 이제

int* init_dados(char *name, int *n, int *iter){ 
FILE *f; 
int *p, *q; 
int i, j; 

f=fopen(name, "r"); 
if(!f) 
{ 
    printf("Error on the access of the file\n"); 
    exit(1); 
} 
// number of iteractions 
fscanf(f, " %d", iter); 
// number of vertices 
fscanf(f, " %d", n); 

p = malloc(sizeof(int)*(*n)*(*n)); 
if(!p) 
{ 
    printf("Error on the allocation of the memory\n"); 
    exit(1); 
} 
q=p; 

for(i=0; i<*n; i++) 
    for(j=0; j<*n; j++) 
     fscanf(f, " %d", q++); 
fclose(f); 
return p; 
} 

나는 숫자가 모두 여기에

파일의 예입니다 int로 몇 가지 기본적인 파일을했다

1 2 7.83 
    1 3 -5.45 
    1 4 8.90 

내가 텍스트 파일을 읽을 수 : 나는 INT을 가지고 있으며,이 같은 수레 새로운 파일이 d 또한 화면에 인쇄합니다. 나는 마지막 프로그램과 같은 것을 할 수 있을지도 모르지만 나는 또한 수레가 있다고 생각했다. 그것들을 새로운 벡터에 저장해야합니까? 어떻게 할 건데? 저 좀 도와 주 시겠어요?

+1

'110'정점 정보는 어디에 있습니까? 단지 8 개의 숫자 만 따라옵니다. 그러나, "새로운 파일"은'struct indata {int a; int b; 플로트 f; }; ' –

+0

가난한 예제로 "내 코드 작성"질문이기 때문에이 주제를 오프 토픽으로 닫으려고합니다. –

+0

질문을 업데이트하십시오. 정확히 원하는 것을 말하기는 어렵습니다. – RoadRunner

답변

0

당신은 fscanf에서 % f를 대신 % D를 사용할 수 있으며, 물론 당신은

0

당신이 fscanf에 참조 http://www.cplusplus.com/reference/cstdio/fscanf/에서

int data1; 
int data2; 
float data3; 

fscanf(f, "%d %d %e", data1, data2, data3); 

봐 뭔가를 시도 할 수 있었다 변수 떠 포인터를 필요 .

+0

'int x; some_function (x);''x''는 초기화되거나 할당되지 않았습니다. 'some_function() '에 어떤 값을 부여합니까? 'x'는 정의되거나 초기화되지 않으므로 문제가 발생합니다. 'data1'에서도 똑같은 일이 일어나고 있습니다. – chux