如何在ANSI C中malloc字符串数组? 在C++中,我可以很容易地分配字符串数组(比如说10个字符串): string* arrayOfString = new string[10];

如何在ANSI C中malloc字符串数组? 在C++中,我可以很容易地分配字符串数组(比如说10个字符串): string* arrayOfString = new string[10];,c++,c,C++,C,但是,我不知道如何在ANSI C中执行此操作。我尝试了: char** arrayOfString = (*(char[1000])) malloc (sizeof (*(char[1000]))); 但是编译器(mingw3.4.5)一直说这是“语法错误”。 如何做对? 谢谢。如果每个字符串的大小在编译时都是已知的,比如100,那么您可以这样做1: 我假设所有1000个字符串的大小都相同。如果它们的大小不同,那么您必须在每次迭代中传递不同的值,如下所示: for(i = 0 ; i <

但是,我不知道如何在ANSI C中执行此操作。我尝试了:

char** arrayOfString = (*(char[1000])) malloc (sizeof (*(char[1000])));
但是编译器(mingw3.4.5)一直说这是“语法错误”。 如何做对?
谢谢。

如果每个字符串的大小在编译时都是已知的,比如100,那么您可以这样做1:

我假设所有1000个字符串的大小都相同。如果它们的大小不同,那么您必须在每次迭代中传递不同的值,如下所示:

for(i = 0 ; i < 1000; ++i)
     arrstring[i] = malloc(sizeof(char) * sizeOfEachString[i]); 
相反,您应该这样做:

std::vector<std::string>  strings;
strings.reserve(10);
std::向量字符串;
3.储备(10);
#定义N 10//字符串数
#定义M 20//字符串的大小
/*请检查malloc返回值是否不为空*/
char**arrayOfString=malloc(sizeof*arrayOfString*N);
对于(i=0;i
尝试使用此方法分配100个字符串。每个字符串的长度最多为1000个字符

char** arrayOfString = (char**) malloc (sizeof(char[100][1000]));

它应该是for(i=0;ifor中的
i
?你是如何编译的,用什么编译的?gcc将这些错误捆绑到一个.cpp文件中,只包括stdio.h和stdlib.h。TCP.CPP:9:错误:无效的转换从“空白*”到“ch***”。CPP:11:错误:在'''临时'.CPP:11之前的预期不合格ID:11:错误:预期的构造函数、析构函数或类型转换在''OctoPulsBucBo.'文件名结束.CPP扩展之前,要求用GCC编译它,GCC将使用C++语言编译它。使用gcc的
-xc
选项将其编译为C程序,或将文件扩展名重命名为.C.@octopusgrabbus,我将回滚您的更改。我不确定他们在更改代码样式时是否添加了一些内容。为什么不将
void
作为函数参数?为什么包括stdio.h?为什么{现在在新行中?为什么**没有绑定到函数标识符?不建议强制转换malloc的返回(如所解释的)但是如果你打算把你的代码编译成C++的话,那就是NeSeSeray.@ ErgReist:哦,我不知道哪种是纯C的,我不知道C的东西。谢谢你的评论。我编辑了我的文章。打字数组?真的?+ 1,“尽可能避免新的!”我通常能知道一个人在C++中有多少时间在内存中分配不同的内存分配程序。是的。为什么C在STACKORM的“C”段中这么难理解?
string* arrayOfString = new string[10]; //avoid new as much as possible!
std::vector<std::string>  strings;
strings.reserve(10);
#define N  10   // Number of strings
#define M  20   // Size of the strings

/* Please check malloc return value is not NULL */

char **arrayOfString = malloc(sizeof *arrayOfString * N);

for (i = 0; i < N; i++) {
    arrayOfString[i] = malloc(M);
}
char** arrayOfString = (char**) malloc (sizeof(char[100][1000]));