我已将我的结构声明为
struct linkedStruct
{
char name;
int size;
enum groupstatus status;
struct linkedStruct* next;
};
我正在尝试将代码中的char * name变量(字符串)传递给此结构的单个节点。 例如,用户输入Jon,我希望我的char名称存储字符串Jon。
我在弄清楚如何解决这个问题时遇到了一些麻烦。我只是简单地说明(假设我的节点名称是临时的)
temp->name = name;
但是当我在存储时打印出名称值时,printf什么都不返回。
我最初在我的结构中将它作为名称[30],因为我们假设名称少于30个字符,但这最终使我更加困惑,因为我在尝试将名称存储到结构中时一直遇到错误带有for循环。
我的struct的其他实现
struct linkedStruct
{
char name[30]; //now a character array
int size;
enum groupstatus status;
struct linkedStruct* next;
};
代码是
for(int i = 0; i< sizeof(name); i++){
name[i] = temp->name[i];
//seemed totally wrong to do but I had no idea how to go about it
}
我只是想知道如何在任何一种情况下存储它,因为我当前的代码不起作用。在我的名字[30]实现中,我不知道如何声明/访问struct的数组符号。
答案 0 :(得分:1)
这是不可能的。 char
类型的变量只有一个字符的空间。
如果您知道名称限制为30个字符,则应该
char name[30];
在结构声明中。使用strcpy()
复制C中的字符串,因此您可以执行以下操作来在结构中设置名称:
struct linkedStruct temp;
strcpy(temp.name, "hello");
答案 1 :(得分:0)
你需要:
strcpy(temp->name, name);
而不是:
temp->name = name;
将指针temp->name
中的字符串复制到指针name
的内存中。
您必须确保name
字符串不超过29个字符。