前提・実現したいこと
構造体を定義し、構造体のポインタ配列のメモリを確保する。
そのあと、構造体ポインタ配列の要素を入力から出力し、まとめて表示する。
発生している問題・エラーメッセージ
入力したものがうまく表示されない
該当のソースコード
C
1(#)include <stdio.h> 2(#)include <stdlib.h> 3(#)define NUM 3 4(#)define NUM1 20 5 6struct result { 7 int number; 8 char name[NUM1]; 9 int english; 10}; 11 12int main(void) { 13 struct result *s_rt[NUM]; 14 15 int i; 16 for (i = 0; i < NUM; i++) { 17 s_rt[i] = (result*)malloc(sizeof(result)); 18 if (s_rt[i] == NULL) 19 printf("メモリの動的確保に失敗しました\n"); 20 21 else { 22 printf("%d番目の番号を入力してください:", i + 1); 23 scanf_s("%d", &s_rt[i]->number); 24 printf("%d番目の名前を入力してください:", i + 1); 25 scanf_s("%s", s_rt[i]->name, NUM1); 26 printf("%d番目の英語の点数を入力してください:", i + 1); 27 scanf_s("%d", &s_rt[i]->english); 28 } 29 free(s_rt[i]); 30 } 31 int j; 32 for (j = 0; j < NUM; j++) { 33 printf("番号:%d\n", s_rt[j]->number); 34 printf("名前:%s\n", s_rt[j]->name); 35 printf("英語の点数:%d\n", s_rt[j]->english); 36 } 37 return 0; 38}
試したこと
補足情報(FW/ツールのバージョンなど)
1番目の番号を入力してください:1
1番目の名前を入力してください:a
1番目の英語の点数を入力してください:1
2番目の番号を入力してください:4
2番目の名前を入力してください:b
2番目の英語の点数を入力してください:2
3番目の番号を入力してください:5
3番目の名前を入力してください:c
3番目の英語の点数を入力してください:3
番号:-572662307
名前:ンンンンンンンンンンンンンンンンンンンンンンンンンンンン
英語の点数:-572662307
番号:-572662307
名前:ンンンンンンンンンンンンンンンンンンンンンンンンンンンン
英語の点数:-572662307
番号:-572662307
名前:ンンンンンンンンンンンンンンンンンンンンンンンンンンンン・ン
英語の点数:-572662307
文字化けが起きてしまう
回答2件
あなたの回答
tips
プレビュー