#include <stdio.h> #include <stdlib.h> struct student{ int num; char name[20]; int score; }; struct student St[100] = {{3,"鈴木三郎",86}, {1,"山田一郎",75}, {14,"高橋十四子",93}, {2,"田中二子",68}}; int main(){ int i; FILE *fp; fp =fopen("test.txt","w"); for(i=0; i<4; i++){ fprintf(fp,"%d %s %d\n", St[i].num, St[i].name, St[i].score); } fclose(fp); }
同じ質問を二回しないでください。 https://teratail.com/questions/99230
すみません。でも、内容は少し変わってます。
肝心のfopenの使い方が何も変わっていないようですが。
適当にやってエラーが出るのは当たり前です。自分がわからない点が何かをまず押さえて、わかるところから少しずつ機能を拡張してください。
指摘してもらえませんか?
fopenの第一引数はファイル名です。
今わからないのがstructの中身をどうやってfopenに入れたらいいのかわかりません。
fopenの第一引数はファイル名です。構造体は一切関係ありません。
変なこと言ってたらすみません。fopenのSt[]をdataなどに変えこれがファイル名でrの読み込みはなにを読み込んでるんですか?
fopenはFile openの略です。イメージで言うと、fopenでメモ帳を開き、fprintfで書き込んでいる感じです。メモ帳を開く際には、『これからなにを書くよ』という事前通達は必要ありません。
このプログラムでおかしなところはforからで間違いないでしょうか?
コンパイルしたらわかると思いますが。
動かないんですが、出力したいのはSt[]の中身なので読み込むのはSt[]でしょうか?
まずなんでエラーが起きるか突き止めるのが先決でしょう。動かないものにいくらぜい肉付けたって動かないですよ。
なんでStなら動くと思ったんですか?説明できますか?
まずメモ帳の中身を埋めたくてStを読み込めばできるんじゃないかと思いました。
fopenはファイルを開くための関数です。構造体は一切関係ありません。
第一引数はファイル名って言ってますよね?
すみません、訂正します。
とゆうことは、今はdataという読み込みのファイルが作られてて中身がないとfile dose not exist!と表示されるということで間違いないでしょうか?
それで、元に戻ったわけですが。エラーの原因を突き止めなければいけませんね。まずエラーメッセージをしっかり読んでください。
dataというファイルが作られるわけではありませんが、まあ今までの発言の中では一番的を射てます。
今の時点ではfile dose not exist! exited with non-zero statusと表示されます。
正しくは、『第一引数に与えられた文字列の名前のファイルを開こうとし、失敗したらfile does not exist!と表示される』ですね。中にデータがあるかどうかは別の話です。
え、コンパイル通ります?
一応通ります。
本当に質問文に書いてあるコードの通りですか?どう考えてもコンパイルが通りそうにないのですが。
貼りなおしました。
エラーだらけですが。コンパイル出来ていないんじゃないですか?どんなコンパイラをどんなふうに使っているんです?
repl.itというのを使ってます。
エラーだらけでした、プログラムの一部が違ってました。
repl.itをちょっと触ってみましたが、いろいろ意味不明な挙動を見せています。別の環境を使えるならそちらをお勧めします。※あとから見た人向け fopenの第一引数が構造体変数名でもなぜか動く。第一引数の型を無視している?
というか、ファイル入出力が必要なプログラムが、果たしてWeb上で動くのだろうか...
別の環境がありません。コマンドプロンプトもclなど使えません。
おすすめとかありますか?
逆に言うと、clが使えるならそれでも良いのでしょうか?パスを通せば使えると思うのですが。
通し方がわかりません。一度調べてみたのですがごちゃごちゃしててわかりにくかったです。
私は中規模な開発はVisual Studioで、小規模なものは適当なエディタ + gccでやってますね。
visual studioは使ったことがあります。これがあればファイルの入出力をできますか?
全く問題なく出来ます。小規模な開発するにはちょっと小回りは効きませんが。インストール済みでしょうか?
まだですね。2016 expressがいいんでしょうか。新しいと無駄なものが多いと聞いたことがあります。
インストールしてみました。
さて、ちゃんとエラーが出ていますかね?どんなプログラマでもエラーは頻繁に出します、これを適切に解決できるのが優秀なプログラマです。(もちろんエラー潰しのスキル以外にも必要なものはごまんとありますが)
visual studio のやり方を教えてくれませんか?私は 開く→ファイル→プロジェクトと思っていてその中には空のソリューションのみあります。
既にソリューションがある場合の操作ですね。初めて開いてなにもファイルがない場合は、新規作成する必要があります。
新規作成→プロジェクト→空のソリューションで作りました。でも、右の枠に作ったのが出てますが左のメインみたいなところは何もありません。
ソリューションに実際のファイルを追加する必要があります。ここらへんは、『Visual Studioの使い方』みたいなサイトが探せばありそうですが。
あなたの回答
tips
プレビュー