C언어 파일 입출력 데이터 읽기 질문드립니다
조회수 1510회
void main(int argc, char** argv)
{
double *fv;
int numOfVertex;
int i;
FILE *f;
f = fopen("head_new.txt", "r"); // 스트림 열기
fscanf(f, "%d \n", &numOfVertex); // 정점의 수 읽어들이기
fv = (double*)malloc(sizeof(double)*numOfVertex); // 정점의수 10113만큼 동적할당
for (i = 0; i<numOfVertex; i++) // 정점의 좌표 읽어들이기
fscanf(f, "%lf", &fv[i]);
fclose(f); // 스트림 닫기
printf("%d \n", numOfVertex); // 정점의 수 출력
for (i = 0; i < numOfVertex; i+=3) // 정점 출력
{
printf("%-20lf", fv[i]);
printf("%-20lf", fv[i + 1]);
printf("%-20lf \n", fv[i + 2]);
}
}
안녕하세요 저번에 비슷한 질문을 드리고 해결했지만 이번에는 소스차원?에서의 질문을 드리고자 또 비슷한 소스를 들고왔습니다..코딩을 잘못해서 나오는 문제로 질문들 드리는거니 양해좀 부탁드리겠습니다.
제가 하려고하는것은 메모장의 데이터를 읽어들어들여 잘 읽어들이는지 확인하는 작업을 하고있습니다. 메모장에는 정점의 수의 갯수와 정점의 (x,y,z)좌표, 면의 갯수와 그 면의 꼭지점의 번호?들이 저장되어있습니다. 메모장에 저장되어있는 데이터를 OpenGL에서 표현하면 사람 형상의 물체가 나오게 됩니다. 그래서 먼저 메모장의 정점들을 읽어들이고 확인하는 작업에 있습니다.
첫 사진에서 10113은 정점의 갯수이고 그 아래 실수들은 정점의 좌표입니다. 또 20222부터 시작하는 다음 사진에서 20222는 면의 갯수이고 그 아래 수들은 꼭지점의 번호라고 보면 되시겠습니다. 마지막 사진은 제가 짠 소스의 실행결과입니다. 이 정점과 면들의 데이터는 모두 한 메모장안에 저장되어있습니다.
메모장에 있는 정점의 좌표를 읽어들이기 위해 먼저 file 입출력함수를 썼습니다. 그런데 마지막 사진에서는 잘나온것 처럼 보이지만 실제로 확인을 해보니 데이터를 어느정도 입력을 받다가 끝나버립니다.너무 한참 못미치게요. 뭐가 잘못되었는지 잘모르겠습니다.
데이터를 딱 알맞게 입력받기 위해서 먼저 numOfVertex 변수에 10113 의 정보를 받고 10113만큼 동적할당을 해줍니다. 그럼 10113개의 배열이 생긴셈이고 그 다음 for문으로 동적할당한 fv변수에 데이터를 하나하나 읽어 들입니다.
그리고 잘 읽어들였는가를 확인을 위해 그아래 출력을 하는데 저렇게 나오네요. 확인을 쉽게하기위해 메모장이랑 똑같이 해주려고 for문의 조건식을 i+=3이렇게 해줬는데 이건 문제가 안되어보이는데 왜 입력을 다 받아 들이지 못하는지 잘 모르겠습니다.
제가 아직 초보자라 솔직히 저부분이 잘못되었는지 아닌지 잘 모르겠으니..부탁드리겠습니다 조금 도와주시면 감사하겠습니다. 면의 갯수와 면의 번호정보도 다 출력을 해야하는데 아직 정점의 정보도 제대로 출력을 못하니 답답할 노릇이네요
댓글 입력