Dies ist ein C-Code zum Sortieren der Teilstrings eines großen Strings, beginnend bei jedem Index, aber ich kann nicht verstehen, wie wir das Array a im Code sortieren können.Was passiert, wenn wir zwei Zeiger in C gleichsetzen?
Soweit ich verstehen:
- wir
a[i]
-&c[i]
beziehen und so erstellt es n-Arrays aber nicht&a[i][1] == &a[i+1][0]
? Seit
a[i] = &c[i]
, stimmt es, dass&a[i][0] == &c[i]
?Wenn nicht, sieht das wie eine schnellere Möglichkeit aus, n (Länge der ursprünglichen -Zeichenfolge) Arrays zu erstellen, ohne es tatsächlich zu kopieren. Ist das wahr?
Mein Code
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define M 1
#define MAXN 5000000
char c[MAXN], *a[MAXN];
int pstrcmp(char **p, char **q){
return strcmp(*p, *q);
}
int main(){
int i, ch, n = 0, maxi, maxlen = -1;
while ((ch = getchar()) != EOF) {
a[n] = &c[n];
c[n++] = ch;
}
c[n] = 0;
qsort(a, n, sizeof(char *), pstrcmp);
printf("%s",a[1]);
return 0;
}
"Gleichung" ist kein Verb - meinst du "zuweisen" oder "für Gleichheit vergleichen"? Auch "nicht" & a [i] [1] = & a [i + 1] [0] '?" - Nein, das sind völlig verschiedene Dinge. –
Verwenden Sie '==', wenn Sie Vergleiche meinen. Verwenden Sie '=' wenn Sie Assign meinen wollen. – v7d8dpo4
Was ist 'pstrcmp'? –