0

frags2サイズの配列を動的に割り当ててnumberOfFrags、元の配列の内容をコピーしようとしています。私は多くのアプローチと検索を試みましたが、ここで何がうまくいかないのか理解できません。sizeof新しい配列では0、私が思っていたものの代わりに戻りますmalloc

どんな助けでも大歓迎です!

 int main(int argc, const char* argv[]) {
     char* frags[MAX_FRAG_COUNT];  
     FILE* fp = fopen(argv[1], "r");
     int numberOfFrags = ReadAllFragments(fp, frags, MAX_FRAG_COUNT);
     fclose(fp);
     char** frags2 = (char**)malloc(numberOfFrags * sizeof(char*));
     for (int i = 0; i < numberOfFrags; i++) {
         frags2[i] = frags[i];
     }
     qsort(frags2, sizeof(frags2) / sizeof(char *), sizeof(char*), cstring_cmp);  
4

1 に答える 1

4

新しい配列のSizeofは、mallocしたと思っていたものではなく0を返します

配列ではなく、ポインタです。このコンテキストでは、オペレーターsizeofは、割り当てた量ではなく、ポインターのサイズを生成します。

だから、その代わりにsizeof、あなたは試すことができます

qsort(frags2, numberOfFrags, sizeof(char*), cstring_cmp);   
于 2012-07-09T09:14:27.190 に答える