LoginSignup
0
2

More than 3 years have passed since last update.

C言語 構造体とポインタ 実践を意識rev2

Posted at

前の記事から引き続きコーディングです。
コメントでためになる意見を頂き、だいぶパクってしまってます(笑)
ざっくりと当初の期待通りの動きにはなってきたので、
あとはエラーケースを想定したり?ユーザー数拡張したり?何をしていこうかな~

userinfo.c
#include "stdio.h"
#include "stdint.h"                 // defined uint8_t ここに潜んでいたのか!
#define NAME_SIZE       ( 100 )   
#define AGE_SIZE        (  10 )   
#define ADDRESS_SIZE    ( 100 )   
#define SEX_SIZE        (  10 )   
#define PHONE_SIZE      (  20 )   

typedef struct user_info {          
    uint8_t  name[NAME_SIZE];
//  uint32_t  age;                  //デーモン閣下は100054才。
    uint8_t  age[AGE_SIZE];         //半角数字以外も入力されることを考慮するとこっちがいいのか。
    uint8_t  address[ADDRESS_SIZE];
//  uint8_t  sex;                   //0:男 1:女 2:秘密  bool型は避けておこう。
    uint8_t  sex[SEX_SIZE];         //0入力後のEnterで止まってしまったのでこっちに
    uint8_t  phoneNumber[PHONE_SIZE];
}UserInfo;

UserInfo_input(UserInfo* user) {
    printf("名前を入力してください->");
    scanf_s("%s", user->name,sizeof(user->name));

    printf("\n年齢を入力してください->");
    scanf_s("%s", user->age, sizeof(user->age));

    printf("\n住所を入力してください->");
    scanf_s("%s", user->address, sizeof(user->address));

    printf("\n性別を入力してください->");
    scanf_s("%s", user->sex, sizeof(user->sex));

    printf("\n電話番号を入力してください->");
    scanf_s("%s", user->phoneNumber, sizeof(user->phoneNumber));

}

UserInfo_save(UserInfo* user) {
    FILE* fp;
    fopen_s(&fp, "test1.txt", "w");
    fprintf_s(fp, "【名前】\n%s\n", user->name);
    fprintf_s(fp, "【年齢】\n%s\n", user->age);
    fprintf_s(fp, "【住所】\n%s\n", user->address);
    fprintf_s(fp, "【性別】\n%s\n", user->sex);
    fprintf_s(fp, "【電話番号】\n%s\n", user->phoneNumber);
    fclose(fp);
}

int main(void) {
#if 0 
    UserInfo* userP;
    UserInfo user;
    userP = &user;
    UserInfo_input(userP);
    UserInfo_save(userP);
#else //これでいいのか!
    UserInfo    user;
    UserInfo_input(&user);
    UserInfo_save(&user);
#endif

    return 0;

}
0
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2