"<<--
"(行9)と書いた行にエラーが表示されます。コンパイルエラーはありませんでしたが、入力中に "Segmentation fault:11"と表示されました。私は何がうまくいかなかったのか分からない。セグメンテーションフォールトが発生しています:11
入力:
3 3
1 1 1
2 2 2
3 1 5
コード:
#include <stdio.h>
#include <stdlib.h>
int comp (const void * x, const void * y)
{
int *a = *(int **)x;
int *b = *(int **)y;
//getting error here
if (a[0] == b[0]) // <<-- here
{
if (a[2] == b[2])
{
return -(a[1] - b[1]);
}
else
{
return a[2] - b[2];
}
}
else
{
return a[0] - b[0];
}
}
int main()
{
int n;
long long d;
scanf("%d %lld", &n, &d);
int t[n][3];
for (int i = 0; i < n; i++)
{
scanf ("%d %d %d", &t[i][0], &t[i][1], &t[i][2]);
}
printf("%lu\n", sizeof(t[0]));
qsort(t, n, sizeof(t[0]), comp);
for (int i = 0; i < n; ++i)
{
printf("%d-%d-%d\n", t[i][0], t[i][1], t[i][2]);
}
}
誰もこれで私を助けることができますか?
ようこそスタックオーバーフロー。まもなく、[About]と[Ask]ページをお読みください。コンパイラに 'a'と' b'のアドレスを出力しましたか?何故なの?コンパレータにブレークポイントを設定してデバッガを試してみましたか? –
コードには、各行の要素数が3ではない入力に関する問題があることに注意してください(データの最初の行に '10 4 'が含まれる場合、コードはサイズ4を正しく処理しません)。それはすぐには重要ではありません - 第2引数が '3' –
のとき、あなたのコードはクラッシュしているようですが、' scanf() 'ファンクションファミリを呼び出すときは常に、返される値(パラメータ値ではありません)操作は成功しました。 – user3629249