私はCの初心者で、input.txtファイルに動的に割り当てられて読み取られる操作を実行しようとしています。問題は、「セグメンテーション違反」の原因となっているエラーが見つからないことです。行列を割り当てて操作を実行し、「+」または「-」記号をますます見つけます。「=」記号が見つかったら、結果をファイル output.txt に出力します。
私の最初のコードは、次のように配列を割り当てています。
#include <stdio.h>
#include <stdlib.h>
double ***AlocarMatriz(int p, int m, int n)
{
int i, j;
double ***Matriz;
Matriz = (double***) malloc (p * sizeof(double**)); // alloc number of plans
for (i = 0; i < p; i++){
Matriz[i] = (double**) malloc (m * sizeof(double*));
if (Matriz[i]==NULL)
printf("plain"); // alloc rows
for (j = 0; j < p; j++){
Matriz[i][j] = (double*) malloc (n * sizeof(double));
if (Matriz[i][j]==NULL)
printf("plain"); // alloc cols
}
}
return Matriz;
}
void ImprimeMatriz(double ***Matriz, int p, int m, int n)
{ // print matrices
int i, j, k;
for(i = 0; i < p; i++){
for(j = 0; j < m; j++){
printf("\n");
for(k = 0; k < n; k++){
printf("%.2lf ", Matriz[i][j][k]);
}
}
}
}
int main(int argc, char *argv[])
{
double*** A;
int x, y, z;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &z);
A = AlocarMatriz(x, y, z);
//double A[x][y][z];
ImprimeMatriz(A, x, y, z);
system("PAUSE");
return 0;
}
ファイルを読み取り、次のような配列を取得するコードを作成しようとしました。
2 //instances - number of operations
2 2 2 //dimension of matrix - plan, row and column
0 1 // first matrix
1 0
0 1
1 0
+ //operation
0 1 //second matrix
1 0
0 1
1 0
= //flag for stop and print result in output.txt file
開いているtxtファイルの私のコード:
FILE *fent;
//int m, n, p, i, j, k;
if (argc != 3) {
fprintf(stderr, "Entry with correct params numbers!!!\n");
exit(1);
}
fent = fopen (argv[1], "r"); //try open file
if (fent == NULL) {
fprintf("Error to open %s for entry \n", argv[1]);
return -1;
}
fclose(fent);
return (EXIT_SUCCESS);
どこが間違っているのか分からないので続けられません。お世話になりました。