下記のエクセル(csvファイル)に入力されている内容を用意した
構造体に読み込みたいのですが、構造体の内容をprintfで出力すると見当違いの文字列がでてきて苦戦しております。
この場合どのようにコードを書けばよいか教えていただけると幸いです・・・。
補足:scanfで1を入力した場合、2行目をtest[0]に格納し、2を入力した場合はtest[1]に格納するような形で書いております
┌────┬──┬───┐
│name │age │blad │1行目ヘッダ情報
├────┼──┼───┤
│yamada 17 │49 │B │2行目
├────┼──┼───┤
│tanaka 12 │40 │B │3行目
├────┼──┼───┤
│satou │ 16 │0 │4行目
└────┴──┴───┘
下記に自身の書いたコードとヘッダー情報を記載いたします。
#include <stdio.h> #include"kadai.h" /*プロトタイプ宣言*/ void Input(INT Number,COMPANY_MEMBER *ShainInfo); INT main(void) { INT key; /* 数値を格納する変数keyを宣言 */ COMPANY_MEMBER Test[2]; scanf("%d",&key); /* scanf関数で入力した数値をkeyに格納 */ Input((key-1),Test);/* input関数を実行 */ printf("%s,%d,%s\n",Test[key].name,Test[key].age,Test[key].blad); return 0; } void Input(INT Number,COMPANY_MEMBER *ShainInfo) { FILE *output; /* (1)ファイルポインタの宣言 */ if ((output = fopen(FILE_PATH, "r")) == NULL) { printf("file open error!!\n"); return; /* エラーの場合は通常、異常終了する */ } fscanf(output,"%s,%d,%s\n",(ShainInfo+Number)->name, (ShainInfo+Number)->age, (ShainInfo+Number)->blad); fclose(output);
#define CHAR char #define UCHAR unsigned char #define SHORT short #define USHORT unsigned short #define INT int #define UINT unsigned int #define FILE_PATH "Kadai3.csv" //サイズ定義 #define NAME_MAX 20 #define BLAD_MAX 3 typedef struct{ CHAR name[NAME_MAX]; // 名前 SHORT age; // 年齢 CHAR blad[BLAD_MAX]; // 血液型 }COMPANY_MEMBER;
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/16 05:14
2018/11/16 05:18
2018/11/16 05:20