Ich bekomme Fehler in der Zeile, wo ich "<<--
" (Zeile 9) Zeichen gesetzt. Es hatte keinen Kompilierungsfehler, aber während der Eingabe wird "Segmentation fault: 11" angezeigt. Ich weiß nicht, was schief gelaufen ist.Ich bekomme Segmentierung Fehler: 11
Eingang:
3 3
1 1 1
2 2 2
3 1 5
Der Code:
#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]);
}
}
jemand mir mit diesem helfen?
Willkommen bei Stack Overflow. Bitte lesen Sie bald die [Über] und [Ask] Seiten. Haben Sie die im "a" und "b" enthaltenen Adressen im Vergleicher ausgedruckt? Warum nicht? Haben Sie versucht, einen Debugger mit einem Unterbrechungspunkt zu verwenden, der auf dem Komparator eingestellt ist? –
Beachten Sie, dass Ihr Code Probleme mit der Eingabe hat, wenn die Anzahl der Elemente in jeder Zeile nicht 3 ist (wenn also die erste Zeile der Daten '10 4' enthält, wird Ihr Code nicht korrekt mit der Größe 4 umgehen). Das ist nicht sofort kritisch - Ihr Code stürzt anscheinend ab, wenn der zweite Parameter '3' ist. –
Wenn Sie eine der' scanf() '-Familien von Funktionen aufrufen, überprüfen Sie immer den zurückgegebenen Wert (nicht die Parameterwerte) Die Operation war erfolgreich. – user3629249