これは、各インデックスから始まる大きな文字列の部分文字列をソートするためのCコードですが、コード内で配列aをどのようにソートできるかわかりません。Cで2つのポインタを等式にするとどうなりますか?
私の知る限り理解して:
- 我々は
&c[i]
へa[i]
を参照してくださいので、それは、n個の配列を作成したが、ないではない&a[i][1] == &a[i+1][0]
? a[i] = &c[i]
以降、&a[i][0] == &c[i]
は本当ですか?これがそうでなければ、実際にはコピーしないでn(元の長さの 文字列)の配列をより速く作成するように見えます。本当?
私のコード
#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;
}
"equation"は動詞ではありません - "assign"または "equalityの比較"を意味しますか?また、&a [i] [1] =&a [i + 1] [0] '? - いや、まったく違うものです。 –
比較を意味する場合は、 '=='を使用します。割り当てを意味する場合は '='を使います。 – v7d8dpo4
'pstrcmp'とは何か –