前提・実現したいこと
キーボードから指定されたファイル名のデータを読み込ませよ.ファイル名は99文字までとする.またデータは,番号,氏名,数学の点数,英語の点数が空白文字で区切られたデータである.読み込んだ最後のデータの氏名(最大99文字)を表示するプログラムを作成せよ.もしもファイルが存在しない場合にはNGと表示せよ.
という問題あり、自分なりに書いてみたのですが理解が及んでいないところがありどうにも解決できません
発生している問題・エラーメッセージ
出力されない、for分の条件の付け方がわからない
subscripted value is not an array, pointer, or vector
for(i=0;d[i]!=EOF;i++)
と表示される
該当のソースコード
C言語
1#include <stdio.h> 2#include <stdlib.h> 3typedef struct data{ 4 int no; 5 char name[99]; 6 int e; 7 int m; 8} DATA; 9 10int main() 11{ 12int i=0; 13 FILE *fp; 14 char filename[99]; 15 DATA d; 16 scanf("%s",filename); 17 fp=fopen("filename","r"); 18 if(fp==NULL) 19{ 20printf("NG"); 21return -1; 22} 23for(i=0;d[i]!=EOF;i++) 24{ 25fscanf(fp, "%d%s%d%d", &d.no, d.name, &d.e, &d.m ); 26} 27printf("%c",d.name[i]); 28} 29 30
試したこと
whlie分などやってみましたがそれ以前に理解が足りていないようでできませんでした
補足情報(/ツールのバージョンなど)
for分のd[i]の部分には読み出したファイルの最後まで繰り返すようにしたいのですがやり方がわかりません
DATA dはstructで作った構造体の変数だと思っているのですがちがうのかもしれません
初めてC言語でファイルを触るのでほとんど手探りの状態です
回答1件
あなたの回答
tips
プレビュー