前提・実現したいこと
C++(Visual Studio2019)テキストファイルを読み込み、それを構造体に
読み込みコンソールに表示する、というプログラムを作成したいです。
https://edu.clipper.co.jp/pg-2-30.html
ここのCのソースコードをC++で書きたいです。
発生している問題・エラーメッセージ
fopenをfopen_sに、
scanfをscanf_sに直せと警告が出たため直したのですがコンパイルエラー
を吐きます。
ror = fopen_s(&fp, "stars.txt", "r"); より後のfpが0である可能性があります。関数"~"の
指定に従っていません。という警告が出ます。
エラーメッセージ fpが0である可能性があります。関数"~"の 指定に従っていません。という警告が出ます。
該当のソースコード
C++ #include <iostream> #include <cstdio> #include <cstdlib> #define MAXCNT 10 typedef struct { char name[16]; float height; float weight; }shape_t; int main() { int a, i, mt; FILE* fp; errno_t error; shape_t stars[MAXCNT]; // 構造体配列の宣言 error = fopen_s(&fp, "stars.txt", "r"); if (error != 0) printf("ファイルがオープンできません\n"); while ((a = fgetc(fp)) != EOF) putchar(a); fclose(fp); for (i = 0; i < MAXCNT; i++) { if (fscanf_s(fp, "%s %f %f\n" // 構造体配列への読み込み , stars[i].name, &stars[i].height, &stars[i].weight) != 3) break; } fclose(fp); // 本来なら、入力したデータを関数などに渡して使います // たとえば一番背の高い人を調べる関数 // int whoIsTallest( shape_t stars[], int num ) など // 関数との受け渡しは次回のTipsで ... mt = 3; // ここでは3が返されたことにします printf("The tallest is %s(%.1fcm)\n", stars[mt].name, stars[mt].height); }
試したこと
fclose(fp)とerror
を随所に入れてみましたが駄目でした。かれこれ4日ほど悩んでおります。
補足情報(FW/ツールのバージョンなど)
初投稿です。C++を始めて一週間の初心者です。どうぞお力添えくださいますようお願い申し上げます。
コードは、
```C++
と
```
の行で囲んで下さい。
回答2件
あなたの回答
tips
プレビュー