如何在c中改变结构体的元素?

  • 本文关键字:结构体 元素 改变 c
  • 更新时间 :
  • 英文 :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef char Name[100];
typedef struct Daughter
{
Name name;
int age;
int height;
}Tochter;
typedef struct Father
{
Tochter kleine[6];
Name v;
int age;
int height;
int numofdaugh;
}Dad;
int main (void)
{
Vater Martin, *pDad;
int numofdau;
printf("How many Daughters? ");
scanf("%i", Martin.numofdaugh);
pDad = &Martin;
pDad->kleine[0].name = "Alice"; 
// I also tried Martin.kleine[0].name = "Alice";
}

我也试着用函数改变元素,但它仍然不起作用,错误消息是:表达式必须具有指针到对象类型,但它具有类型"Tochter"

  1. 不能赋值数组
scanf("%i", &Martin.numofdaugh);
pDad = &Martin;
strcpy(pDad->kleine[0].name, "Alice"); 

PS类型Dad应为Vater

scanf需要传递一个指针

而不是:

scanf("%i", Martin.numofdaugh);

传递一个指向Martin.numofdaugh的指针:

scanf("%i", &Martin.numofdaugh);

您还想使用strncpy将字符串复制到Name

Name bobs_name = {0};
strncpy(bobs_name, "Bob", 100);

使用strncpy而不是strcpy可以防止溢出的可能性,因为Name限制为100个字符。

pDad->kleine[0].name = "Alice";

是错误的,因为你不能这样复制c -string(使用strcpy)。

更正确的是:

strcpy(pDad->kleine[0].name,"Alice"); 

@Chris答案是正确的,但你也有一个类型Vater,不存在其他地方

相关内容

  • 没有找到相关文章

最新更新