Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 动态分配字符串数组的问题_C_Arrays_Dynamic Allocation - Fatal编程技术网

C 动态分配字符串数组的问题

C 动态分配字符串数组的问题,c,arrays,dynamic-allocation,C,Arrays,Dynamic Allocation,我正在尝试动态分配大小为numberofrags的数组frags2,并复制原始数组的内容。我尝试了许多方法和搜索,但不明白这里出了什么问题sizeof返回0,而不是我认为的malloc'd 任何帮助都将不胜感激 int main(int argc, const char* argv[]) { char* frags[MAX_FRAG_COUNT]; FILE* fp = fopen(argv[1], "r"); int numberOfFrags = Read

我正在尝试动态分配大小为
numberofrags
的数组
frags2
,并复制原始数组的内容。我尝试了许多方法和搜索,但不明白这里出了什么问题<新数组上的code>sizeof返回
0
,而不是我认为的malloc'd

任何帮助都将不胜感激

 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);  
int main(int argc,const char*argv[]{
字符*碎片[最大碎片数];
文件*fp=fopen(argv[1],“r”);
int numberofrags=ReadAllFragments(fp、frags、MAX\u FRAG\u COUNT);
fclose(fp);
char**frags2=(char**)malloc(numberOfFrags*sizeof(char*);
for(int i=0;i
新数组上的Sizeof返回0,而不是我认为应该返回的值

它不是数组,而是指针。在此上下文中,运算符
sizeof
生成指针的大小,而不是您分配的数量

所以,你可以试试看,而不是那种
sizeof
的东西

qsort(frags2, numberOfFrags, sizeof(char*), cstring_cmp);   
新数组上的Sizeof返回0,而不是我认为应该返回的值

它不是数组,而是指针。在此上下文中,运算符
sizeof
生成指针的大小,而不是您分配的数量

所以,你可以试试看,而不是那种
sizeof
的东西

qsort(frags2, numberOfFrags, sizeof(char*), cstring_cmp);   

非常感谢,这很有效。但我不明白的是原始数组frags有什么不同。调用sizeof(frags)返回80000(最大FRAG计数为20000)。@JasonBlock:原始数组。
frags2
不是数组,它是一个指针,您可以向其分配地址。另一种(误导性)说法是“
sizeof
在编译时工作”。非常感谢,这很有效。但我不明白的是原始数组frags有什么不同。调用sizeof(frags)返回80000(最大FRAG计数为20000)。@JasonBlock:原始数组。
frags2
不是数组,它是一个指针,您可以向其分配地址。另一个(误导性)这种说法是“
sizeof
在编译时工作”