アプリ版:「スタンプのみでお礼する」機能のリリースについて

この構造体配列の製品データをファイル”ProductData.dat”に保存できるようにしたうえで、書き込んだファイルを読み込んで確認できるように下の画像のプログラムをどのように修正すればよいか教えていただけませんか。
よろしくお願いいたします。。

「C言語の問題です。」の質問画像

A 回答 (1件)

#include <stdio.h>


#include <stdlib.h>
#include <string.h>

#define N 10

typedef struct {        /* 製品データの構造体宣言 */
 char name[30];       /* 製品番号 */
 double height;       /* 寸法 */
 double weight;       /* 重量 */
} PRODUCT;

PRODUCT getData() {     /* 構造体データの入力 */
 PRODUCT p;
 char s[30];
 printf("製品番号: ");     /* 製品番号 */
 scanf("%29s%*[^\n]*c", s);
 getchar();
 strcpy(p.name, s);
 printf("寸法");        /* 寸法の測定値 */
 scanf("%10s%*[^\n]*c", s);
 getchar();
 p.height = strtof(s, NULL);
 printf("重量");        /* 重量の測定値 */
 scanf("%10s%*[^\n]*c", s);
 getchar();
 p.weight = strtof(s, NULL);
 return p;
}

void showData(PRODUCT x) { /* 構造体データの出力関数 */
 printf("製品番号: %s\n", x.name);
 printf("寸法 : %10.1f[mm]\n", x.height);
 printf("重量 : %10.1f[g\n\n]", x.weight);
}

int main(void) {

 PRODUCT data[50];    /* 製品データを構造体配列に */
 /* データの入力 */
 for (int i = 0; i < N; i++) { data[i] = getData(); }

 FILE *fpw = fopen("ProductData.dat", "wb");
 fwrite(&data, sizeof(data), 1, fpw);
 fclose(fpw);

 FILE *fpr = fopen("ProductData.dat", "rb");
 fread(&data, sizeof(data), 1, fpr);
 fclose(fpr);

 /* データの出力 */
 for (int i = 0; i < N; i++) { showData(data[i]); }

 return EXIT_SUCCESS;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!