簡體   English   中英

使用 C 語言創建具有給定字符串的結構名稱

[英]Create a struct name with a given string in C language

我想創建一個執行以下操作的代碼:

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 內置函數進行復制...您的結構的其他字段可以直接分配

您可以像這樣將 scanf 與 struct 一起使用。

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;

使用“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 ;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM