[英]2d array, using calloc in C
我正在尝试创建2D字符数组到字符存储行。 例如:
lines[0]="Hello";
lines[1]="Your Back";
lines[2]="Bye";
由于行必须动态,所以我一开始不知道需要多少行。 这是我的代码:
int i;
char **lines= (char**) calloc(size, sizeof(char*));
for ( i = 0; i < size; i++ ){
lines[i] = (char*) calloc(200, sizeof(char));
}
for ( i = 0; i < size; i++ ){
free(lines[i]);
}
free(lines);
我知道每行不能超过200个字符。 我不断收到诸如“错误C2059:语法错误:'for'”之类的错误。 关于我做错了什么的任何想法?
没有代码不在函数中。
您不能只是将任意语句放在C和C ++中的函数之外。 不过,您可以使用函数来初始化变量:
char** init_lines() {
char** ln = /* ... */;
// your allocations etc. here
return ln;
}
char** lines = init_lines();
您用C ++标记了问题-为什么不为此使用std::vector<std::vector<char> >
?
查看编译器错误,似乎您在其中一个for循环之前缺少分号-您在此处发布的代码似乎运行得很好。
首先,执行第一个calloc
浪费时间,因为您立即使用第一个for
循环对其进行了初始化。
话虽如此,您显示的代码完全没有错。
因此,您的错误可能出在其他地方,或者那不是您发布的代码。 我建议您发布确切的错误消息,以及经过剪切粘贴的违规行的副本,并在上下文的两侧各行十行。 这将使我们的生活变得轻松多了。
错误:
syntax error : 'for' syntax error : missing ')' before ';'
syntax error : missing ';' before '<' missing type specifier - int assumed
如您的评论之一所示,通常是由不平衡的括号引起的。 检查所有(
和)
字符,以确保它们在数量和位置上均相等。 可能是因为您在for
之前的语句中缺少)
,但这只是有根据的猜测,因为您发布的代码没有这个问题。
在这里,我认为是不同的。 可能有用。 char指针或char double在编译期间隐式定义。 因此,它不需要显式定义,并且这样做可以显示语法错误。 如果不希望用NULL初始化垃圾值,请尝试使用char指针而不用calloc初始化。 就像使用calloc一样,您发现没有什么不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.