【发布时间】:2017-07-03 03:22:52
【问题描述】:
我正在尝试增加以下字符数组:
char input_channel_name[ 20 ][ 36 ];
列数始终为 36,但行数可能会有所不同。当我打开我的文件时,我可以将频道名称的数量作为整数获取number_of_channels_in
我尝试将其转换为以下代码(在Resizing 2D Arrays in C 的帮助下),但没有成功:
#define ROWS 20
#define COLS 36
main( argc, argv )
char **input_channel_name;
input_channel_name = malloc(sizeof *input_channel_name * ROWS);
if ( input_channel_name )
{
for ( size_t i = 0; i < ROWS; i++ )
input_channel_name[i] = malloc( sizeof *input_channel_name[i] * COLS);
}
get_input_channels:
input_file = fopen( input_name, "rb" )
fread( plotFileHeader.headerFloats, sizeof( float ), 2, input_file );
number_of_channels_in = plotFileHeader.headerFloats[ N_CHAN_SUB ];
add_rows = number_of_channels_in - ROWS;
char **tmp = realloc( input_channel_name, sizeof *input_channel_name * ROWS + add_rows);
if ( tmp )
{
input_channel_name = tmp;
for ( size_t i = 0; i < add_rows; i++ )
{
input_channel_name[ROWS + i] = malloc( sizeof *input_channel_name[ROWS + i] * COLS);
}
}
我一直收到一个
错误 C2143:语法错误:缺少 ';'在“类型”之前
当我尝试设置input_channel_name = malloc
有什么想法吗?
【问题讨论】:
-
请花时间使您的程序成为正确的minimal reproducible example。根据需要原型 main,添加缺少的包含指令等。
-
main( argc, argv )-->int main( int argc, char **argv ){ ... } -
这不是“
char数组的数组”,而是指向指针的指针。完全不同的数据类型。 -
抱歉,C 是我的氪石,我正在处理一个超过 10,000 行代码的项目。我只是想更新数组,以便我可以在运行时分配内存。我认为这将是一个快速修复,但事实证明并非如此。我将努力精简我的代码,但我不知道如何构建一个完整且可验证的示例,因为它一开始就无法编译。
标签: c arrays multidimensional-array char malloc