c언어 파일입출력 과 동적할당
조회수 3122회
질문 제목 :
txt 파일 입력되어 있는거 출력 프로그램
질문 요약 :
문제는동적할당 입력시 a를 입력 받는걸 이해 했는데
b 를 입력 받고 싶은데 a에넣은 배열로 저장이 됩니다.. 그리고
밑에 문자또한 읽어 오지 못하고 쓰래기값으로 출력이 되네요
코드
///*
//#include
//#include
//
//
//void print_matrix(int row, int col, int **mat)
//{
// int i, j;
// for(i = 0; i < row; i++) // 행을 증가 시킴
// {
// for(j = 0; j < col; j++) // 열을 증가 시킴
// {
// printf("%3d ", mat[i][j]); // 화면에 출력
// }
// printf("\n"); // 화면에 개행문자 출력
// }
//}
//
//int main(void)
//{
//
// file *fp;
// int a_row = 0, a_col = 0,bh =0 ,bw=0;
// int a_matrix, **b_matrix,c_matrix;
// int i,j;
// char num,n1,n2,n3,n4,n5,n6;
//
// fp = fopen("data.txt", "r");
// if(fp==null)
// {
// printf("파일에 열리지 않았습니다.\n");
// return 0;
// }
//
// //while(!feof(fp))
// //{
// fscanf(fp, "%c%d%d",&num, &a_row, &a_col);
// //fscanf(fp, "%c%d%d",&n1, &bh, &bw);
//
// //할당
// a_matrix = (int**) malloc(sizeof(int *) * a_row);
// for(i = 0; i < a_row; i++)
// {
// a_matrix[i] = (int*) malloc(sizeof(int ) * a_col);
// }
// b_matrix = (int**) malloc(sizeof(int *) * a_row);
// for(i = 0; i < a_row; i++)
// {
// b_matrix[i] = (int*) malloc(sizeof(int ) * a_col);
// }
// /c_matrix = (int*) malloc(sizeof(int *) * a_row);
// for(i = 0; i < a_row; i++)
// {
// c_matrix[i] = (int*) malloc(sizeof(int ) * a_col);
// }*/
// // 저장
// for(i = 0; i < a_row; i++)
// {
// for(j = 0; j < a_col; j++)
// {
// fscanf(fp, "%d", &a_matrix[i][j]);
//
// }
// }
// /*
// for(i = 0; i < a_row; i++)
// {
// for(j = 0; j < a_col; j++)
// {
// fscanf(fp, "%d", &b_matrix[i][j]);
// }
// }*/
// /*for(i = 0; i < a_row; i++)
// {
// for(j = 0; j < a_col; j++)
// {
// fscanf(fp, "%d", &c_matrix[i][j]);
// }
// }*/
// //출력
// /*printf("%d\n", a_row);
// printf("%c\n", num);
// printf("=== %c 행렬 ===\n",num);
// print_matrix(a_row, a_col, a_matrix);*/
// //}
// printf("=== %c 행렬 ===\n",num);
// print_matrix(a_row, a_col, a_matrix);
// for(i = 0; i < a_row; i++) free(a_matrix[i]);
// free(a_matrix);
//
// for(i = 0; i < a_col; i++) free(b_matrix[i]);
// free(b_matrix);
//
// return 0;
//}*/
1 답변
-
#include <stdio.h> #include <stdlib.h> void print_matrix(int row, int col, int **mat) { int i, j; for(i = 0; i < row; i++) //행을 증가 시킴 { for(j = 0; j < col; j++) //열을 증가 시킴 printf("%3d ", mat[i][j]); //화면에 출력 printf("\n"); //화면에 개행문자 출력 } } int main(void) { FILE *fp; int i, j, index = 0; int row[3] = {0}; int col[3] = {0}; int **matrix[3]; char matrix_name[3] = {0}; fp = fopen("data.txt", "r"); if(fp == NULL) perror("파일이 열리지 않았습니다.\n"); //할당 및 입력 while(!feof(fp)) { fscanf(fp, " %c %d %d", &matrix_name[index], &row[index], &col[index]); matrix[index] = (int**) malloc(sizeof(int *) * row[index]); for(i = 0; i < row[index]; i++) matrix[index][i] = (int*) malloc(sizeof(int ) * col[index]); for(i = 0; i < row[index]; i++) for(j = 0; j < col[index]; j++) fscanf(fp, "%d", &matrix[index][i][j]); index++; } //출력 for(i = 0 ; i < index ; i++) { printf("=== %c 행렬 ===\n", matrix_name[i]); print_matrix(row[i], col[i], matrix[i]); } //해제 for(i = 0 ; i < index ; i++) { for(j = 0; j < row[i]; j++) free(matrix[i][j]); free(matrix[i]); } return 0; }
읽어보시고 이해안되시는 내용 따로 물어봐주세요
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력