使用参数在 C 中初始化结构
Initialising Struct in C using Parameters
(C 相当新)
我有一个结构,我正在尝试初始化并填充变量。定义者:
(我无法编辑结构的定义)
typedef struct metadata {
off_t size;
char name[50];
} metadata_t;
当尝试使用由以下定义的函数中的参数初始化 'metadata' 对象时:
send_metadata(off_t file_size , char* output_file){
metadata_t meta = {file_size , output_file};
//send metadata to....
}
但是得到警告:
initialization of ‘char’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion]
metadata_t meta = {file_size , name_buf};
^~~~~~~~
完成我想做的事情的正确方法是什么
您不能从指针初始化数组(meta = {file_size , output_file};
正是如此)。
相反,您应该复制 字符串值,例如:
metadata_t meta;
meta.size = file_size;
strncpy(meta.name, output_file, sizeof(meta.name));
meta.name[sizeof(meta.name) - 1] = '[=10=]';
注意如何使用 strncpy
(它限制复制到数组的字符数),以及如何将最后一个元素设置为空终止符,因为如果 strncpy
有截断字符串。
(C 相当新)
我有一个结构,我正在尝试初始化并填充变量。定义者:
(我无法编辑结构的定义)
typedef struct metadata {
off_t size;
char name[50];
} metadata_t;
当尝试使用由以下定义的函数中的参数初始化 'metadata' 对象时:
send_metadata(off_t file_size , char* output_file){
metadata_t meta = {file_size , output_file};
//send metadata to....
}
但是得到警告:
initialization of ‘char’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion]
metadata_t meta = {file_size , name_buf};
^~~~~~~~
完成我想做的事情的正确方法是什么
您不能从指针初始化数组(meta = {file_size , output_file};
正是如此)。
相反,您应该复制 字符串值,例如:
metadata_t meta;
meta.size = file_size;
strncpy(meta.name, output_file, sizeof(meta.name));
meta.name[sizeof(meta.name) - 1] = '[=10=]';
注意如何使用 strncpy
(它限制复制到数组的字符数),以及如何将最后一个元素设置为空终止符,因为如果 strncpy
有截断字符串。