C结构体成员是字符串,如何直接给字节赋值

标签 c string struct

我正在开发一个简单的文件系统,其中(显然)包含文件夹、文件等。

(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/

相关文章:

将指针数组值复制到 C 中另一个数组的末尾

java - 正则表达式替换重复的字符串模式

arrays - 最佳时间的字符串转换

c - 在内核模块中创建链表

c - 将链表写入二进制文件(C)

c - 如何从 places.sqlite firefox 数据库中检索值?

c++ - 这个 min() 函数是如何工作的?

python : Socket Sending Struct(having C stuct as Example)

c - 是否可以在 C 中重复使用 opendir?

java - 如何在 Java 中比较字符串?