我有以下内容:
struct t{
char arr[variable_len];
int i;
};
int main(int argc, char *argv[]){
// set size of arr to length of argv[1]
}
有没有办法做到这一点?我最初只是想让 arr 成为指向数组的指针并单独分配数组,但这会产生大量问题,因为我想将此结构写入管道(将写入指针而不是实际数组)。
我有以下内容:
struct t{
char arr[variable_len];
int i;
};
int main(int argc, char *argv[]){
// set size of arr to length of argv[1]
}
有没有办法做到这一点?我最初只是想让 arr 成为指向数组的指针并单独分配数组,但这会产生大量问题,因为我想将此结构写入管道(将写入指针而不是实际数组)。
撇开缺少错误检查不谈,您可以执行以下操作...
struct t
{
int i;
int data_len;
char arr[];
};
int main( int argc, char* argv[] )
{
int data_len = atoi( argv[1] );
struct t* var;
var = malloc( sizeof( struct t ) + data_len );
var->data_len = data_len;
// open a pipe and do cool stuff to var
fwrite( var, sizeof( struct t ) + var->data_len, 1, output_pipe );
free( var );
}