を印刷し、私は自分の端末上で数独を印刷したいと私は、この構造を得た:構造
#define SUDOKU_SIZE 9
typedef struct {
int grid[SUDOKU_SIZE][SUDOKU_SIZE];
} sudoku_t;
をそして、私は私のメイン機能でこれを得た:コンパイル中にも問題はありません
int main(int argc, char const *argv[]){
sudoku_t *s;
s->grid[0][0]=6;//manualy setting the value of the sudoku
...
s->grid[8][8]=7;
int k, l;
printf("\n");
for(k=0;k<SUDOKU_SIZE;k++){
for(l=0;l<SUDOKU_SIZE;l++){
int a=s->grid[k][l];
printf("%d", a);
}
printf("\n");
}
printf("\n");
return 0;
}
実行中に「セグメンテーションフォルト(コアダンプ)」エラーが発生しました。 * ./ingis `でエラーが発生しました::無料()
は[EDIT] [OK]を、私はmalloc関数を使用して、私の機能、 の時に自由に使用されるが、私はまだエラーが出るありがとう:無効な次のサイズ(速い):0x0000000001e8d010 * 中止(コアダンプ)
ここが更新されたコードです:ここで定義後
int main(int argc, char const *argv[]){
sudoku_t *s=(sudoku_t*)malloc(sizeof s);
if(NULL==s){
perror("malloc() failed");
exit(EXIT_FAILURE);
}
int k, l;
printf("\n");
for(k=0;k<SUDOKU_SIZE;k++){
for(l=0;l<SUDOKU_SIZE;l++){
int a=s->grid[k][l];
printf("%d ", a);
}
printf("\n");
}
printf("\n");
free(s);
return EXIT_SUCCESS;
}
よう
->
オペレータの.
演算子を使用してそれを宣言あなたは 's-> grid [0] [6]'を割り当てる前に 's'のためのメモリを使います。 – Evertコアダンプの前にテキストが出力されましたか? –
structへのポインタをポインタ変数に変更してください: 'sudoku_t s;'、あなたはうまくいくはずです。 – Evert