Cのプログラムについて質問です。
以下のように行列の行数、列数、そして行列そのものを読み込んでそれらをそのままprintfするプログラムをコンパイルして実行してみたところ、n(行数)とm(列数)はちゃんとprintfしてくれるのですが、その直後に行列をprintfする段階でSegmentation fault (core dumped)というエラーが出ます。
間違えている箇所がありましたら教えてください。
宜しくお願いします。
C
1#include <stdio.h> 2#include <stdlib.h> 3 4#define NEW(p,n){p=malloc((n)*sizeof(p[0]));} 5 6typedef double* row_vector; 7typedef row_vector* matrix; 8 9row_vector create_row_vector(int m) 10{ 11 int i; 12 row_vector V; 13 NEW(V, m); 14 for (i=0; i<m; i++) V[i]=0.0; 15 return V; 16} 17 18matrix create_matrix(int n, int m) 19{ 20 int i; 21 matrix A; 22 NEW(A, n); 23 for (i=0; i<n; i++) A[i]=create_row_vector(m); 24 return A; 25} 26 27void read_matrix(int n, int m, matrix A) 28{ 29 int i, j; 30 A=create_matrix(n, m); 31 for (i=0; i<n; i++) { 32 for(j=0; j<m; j++){ 33 scanf("%lf", &A[i][j]); 34 } 35 } 36} 37 38void print_matrix(int n, int m, matrix A) 39{ 40 int i, j; 41 printf("%d %d\n", n, m); 42 for (i=0; i<n; i++) { 43 for(j=0; j<m; j++){ 44 printf("%lf", A[i][j]); 45 } 46 printf("\n"); 47 } 48} 49 50int main() 51{ 52 int n, m; 53 matrix A; 54 55 scanf("%d", &n); 56 scanf("%d", &m); 57 58 read_matrix(n, m, A); 59 print_matrix(n, m, A); 60 61 free(A); 62 return 0; 63}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/13 12:29