在C中将字符串读入结构数据

时间:2016-12-01 06:44:42

标签: c struct

 typedef struct Node {
   char number[5];
    struct Node *next;
 } Node;   


    char userString[5];
    scanf("%s", userString);

    Node *newNode = malloc(sizeof(Node));
    newNode->number = userString;

我正在尝试将用户输入的字符串读入struct node中的“number”,但是我收到的错误是“使用数组类型赋值给表达式”。我能做些什么来解决这个问题?

2 个答案:

答案 0 :(得分:5)

而不是

 newNode->number = userString;

使用strncpy()

 strncpy(newNode->number, userString,sizeof(newNode->number));

需要strcpy的原因: newnode-> number = userSting,newnode-> number是char []类型,因此你需要逐字节循环和填充所有内容,而你的语句指向字符串,这就是为什么编译器给出“赋值给表达式”数组类型“

为什么我使用了strncpy而不是strcpy ... 因为strncpy限制了复制的范围。

我希望你明白。

答案 1 :(得分:2)

您需要使用strcpy函数将数据从userString正确复制到number数组。