私は3つのファイルを持っています:
何か.h
typedef struct {
int size_t;
char *c;
} p;
p ** createMatrix(int r, int c);
void printMatrix(p **matrix, const int r, const int c);
何か.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "something.h"
p **
createMatrix(int r, int c)
{
int rowsize=r*2+1;
int colsize=c*2+1;
/* memory alloc of rows */
p **matrix=malloc(rowsize*sizeof(p *));
int k;
for(k=0; k<rowsize; k++)
{
/* memory alloc of columns */
matrix[k]=malloc(colsize*sizeof(p));
}
int i, j;
for(i=0; i<rowsize; i++)
{
for(j=0; j<colsize; j++)
{
/* columns is between letters */
if(j%2!=0)
{
matrix[i][j].size_t=7;
matrix[i][j].c=malloc(8*sizeof(char));
strcpy(matrix[i][j].c," ");
}
else if(i%2==0 && j%2==0)
{
matrix[i][j].size_t=1;
matrix[i][j].c=malloc(sizeof(char));
*(matrix[i][j].c)='a';
}
else
{
matrix[i][j].size_t=1;
matrix[i][j].c=malloc(sizeof(char));
*(matrix[i][j].c)=' ';
}
}
}
return matrix;
}
void
printMatrix(p **matrix, const int r, const int c)
{
int rowsize=r*2+1;
int colsize=c*2+1;
printf("\n");
int i, j;
for(i=0; i<rowsize; i++)
{
printf("\t");
for(j=0; j<colsize; j++)
{
if(matrix[i][j].size_t==1)
printf("%c", *matrix[i][j].c);
else
printf("%s", matrix[i][j].c);
}
printf("\n");
}
printf("\n");
}
main.c
#include <stdlib.h>
#include <stdio.h>
#include "something.h"
void
printMenufunction(p **matrix, int rows, int cols)
{
int rowsize=rows*2+1;
int colsize=cols*2+1;
/* memory alloc of rows */
matrix=malloc(rowsize*sizeof(p *));
int i;
for(i=0; i<rowsize; i++)
/* memory alloc of columns */
matrix[i]=malloc(colsize*sizeof(p));
matrix=createMatrix(rows, cols);
}
int
main(void)
{
int rows, cols;
p **matrix;
char stringtemp[3];
printf("ask for row and col in form (5x5):\n");
scanf("%s", stringtemp);
sscanf(stringtemp, "%dx%d", &rows, &cols);
printMenufunction(matrix, rows, cols);
printMatrix(matrix, rows, cols);
return 0;
}
私のプログラムの簡略化されたバージョンであるこのコード サンプルでは、セグメンテーション エラーが発生します。gdb でデバッグしたので、これらの行のどこかに問題があることがわかりました。助けていただければ幸いです、ありがとう。
更新: このバージョンはデバッグできません。より多くのコードを含む私の古いプログラムは、この領域に沿っていると教えてくれましたが、少なくともどこにあるのかわかりませんか? そのため、セグメンテーション違反を引き起こしている行を正確に投稿することはできません。知っていれば、自分で問題を処理できたと思います。誰かが私よりもはっきりとそれを見ることができることを願っていました..