如何在ANSI C中malloc字符串数组? 在C++中,我可以很容易地分配字符串数组(比如说10个字符串): string* arrayOfString = new string[10];
但是,我不知道如何在ANSI C中执行此操作。我尝试了:如何在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 <
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;i
for
中的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]));