用C语言创建一个给定字符串的结构名

问题描述 投票:0回答:1

我想创建一个类似这样的代码。

typedef struct {
  char name[1024];
  int age;
  char gender;
}person;

person Jacob = {.name = "Jacob", .age = 15, .gender = 'M'};

但我需要使用scanf选项来获取变量,就像这样。

typedef struct {
   char name[1024];
   int age;
   char gender;
}person;

char name_person[1024];
int age_person;
char gender_person;
scanf(" [:^\n],%d,%c",name_person,&age_person,&gender_person);

我想知道我是否可以做这样的事情:

person name_person = {.name = name_person, .age = age_person, .gender = gender_person};

和上面的代码做同样的事情?如果这听起来像一个愚蠢的问题,我很抱歉,我对C语言很陌生。

c string struct visual-studio-code scanf
1个回答
0
投票

对于name,你需要使用c内建的func来进行复制......你的结构的其他字段可以直接进行分配


0
投票

你可以用 scanf 和这样的结构一起使用。

typedef struct {
   char name[1024];
   int age;
   int sex;
}person;

person human;
scanf(" [:^\n],%d,%c",human.name,&human.age,&human.sex);

或者你可以使用这样的结构

person human;
char c;
int a;
float b;

scanf("%c %d %f",&c,&a,&b);

human.name=c;
human.age=a;
human.sex=b;

0
投票

当使用'scanf'时,你需要将格式与变量相匹配。

在使用'scanf'时,你需要将格式与变量相匹配。scanf 将会处理名字(char [])和年龄(int),但你会用临时变量来处理'sex'属性从char到int的转换。

也可以考虑改变格式--看起来输入是逗号分隔的。如果是这样,那么'%[^,]'就可以了。

{
        // Good idea to initialize 'p'.
        person p = {} ;
        char sex ;

        scanf(" %[^,],%d,%c", p.name, &p.age, &sex) ;
        p.sex = sex ;
}
© www.soinside.com 2019 - 2024. All rights reserved.