我正在开发一个简单的文件系统,其中(显然)包含文件夹、文件等。
(a 的简化版本)文件夹在 RAM 中由结构表示,如下所示:
typedef struct{
char label[20];
unsigned int id;
t_node contents[50];
} folder;
现在,我显然希望标签包含其中包含名称的原始字节字符串(最好是没有尾随 0 的原始字符串,但这是我愿意做出的牺牲)。
不,这是我创建和使用结构的方式:
folder* myFolder = (folder *) malloc(sizeof(folder));
myFolder->label = "name";
//Which doesn't work, if I try this:
char name[20] = "name";
myFolder->label = name;
//this too, doesn't work.
错误消息显示“从类型‘char *’分配给类型‘char[20]’时类型不兼容”。 我明白了,但不知道如何解决。
提前致谢
最佳答案
使用strncpy()
:
char name[20] = "name";
strncpy(myFolder->label, name, sizeof(myFolder->label) - 1);
myFolder->label[sizeof(myFolder->label) - 1] = 0;
关于C结构体成员是字符串,如何直接给字节赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13273623/