C言語 文字化けとエラーを直したい

出力結果の文字化けを直したい

前提

xcodeでファイル出力を行うコードを作成したのですが、入力ファイルから読み取ったデータを出力ファイルに示させるのになぜか結果の文字が文字化けしてしまいます。数字は正しく反映されています。またコードの最後に下記のエラーが発生してしまいます。
ちなみにmacのXcodeで作成しています。

発生している問題・エラーメッセージ

入力ファイルには以下のデータを打ち込んだ 90 85 20 Tanaka 83 97 20 Hirayama 72 70 18 Matsui 60 43 16 Suzuki 69 85 20 Morisaki 100 98 20 Tokunaga 77 68 16 Nasu 23 67 18 Moniwa 85 88 20 Ishikawa 75 100 16 Hayashi その結果出力ファイルには以下のように表示された Score Name ------ ---- -------- 90.0 ‚óã 92.0 ‚óã †flo 74.8 ‚óã ¿ 57.2 √ó xÒflo 81.6 ‚óã `- 99.2 ‚óã @Òflo 74.0 ‚óã 54.0 √ó 89.2 ‚óã p@ 86.0 ‚óã Ûflo ------ ---- -------- 79.8 (Avg) またエラーメッセージは以下のものが表示された Thread 1: signal SIGABRT

該当のソースコード

C言語

1#include <stdio.h>2#define Nmax 103 4 struct student {5 int sc1, sc2, sc3;6 double total;7 char *res, name[20];8};9 10int main(void) {11 struct student A[Nmax];12 double avg=0;13 int i;14 15 FILE* fp1;16 fp1 = fopen("deta.txt", "r");17 18 if (fp1 == NULL) {//もしファイルが開けなかった終了19 printf("--- File not open1 ---\n");//表示20 }21 22 for (i = 0; i < Nmax; i++)23 {24 fscanf(fp1, "%d %d %d %s", &A[i].sc1, &A[i].sc2, &A[i].sc3, &A[i].name[20]);25 }26 fclose(fp1);27 28 FILE*fp2;29 fp2 = fopen("result.txt", "w");30 31 if (fp2 == NULL) {//もしファイルが開けなかった終了32 printf("--- File not open2 ---\n");//表示33 }34 35 fprintf(fp2," Score Name\n");//ファイルに書き込み36 fprintf(fp2,"------ ---- --------\n");//ファイルに書き込み37 38 for ( i = 0; i < Nmax; i++) {39 A[i].total = (A[i].sc1 + A[i].sc2) * 0.4 + A[i].sc3;40 A[i].res = (A[i].total >= 60) ? "○" : "×";41 avg += A[i].total;42 fprintf(fp2, "%6.1f %s %s\n", A[i].total, A[i].res, A[i].name);43 }44 45 fprintf(fp2, "------ ---- --------\n");46 fprintf(fp2, "%6.1f (Avg)\n", avg / Nmax);47 48 fclose(fp2);49}50↑の}ところでエラーが表示される 51

試したこと

テキスト設定の確認など

補足情報

Mac Book Pro 13-inch,M1,2020
X-code バージョン14.3.1

コメントを投稿

0 コメント