传入链表结构中的字符串

时间:2015-10-17 19:59:10

标签: c arrays struct char

我已将我的结构声明为

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的数组符号。

2 个答案:

答案 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个字符。