使用参数在 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 有截断字符串。