![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_01.png?8acaa2e)
ファイル操作がよくわかりません。
struct music{
char *artist[256];
char *title[256];
int year;
}list[100];
という構造体に格納されたデータをファイルに書き込みたいのですが、
fwrite((struct music *)list,sizeof(struct list),100,fp);
とするとyearが表示されません。
また、ファイルへの出力形式は
Artist: list[0].artist
Title: list[0].title
Year: list[0].year
のようにしたいのですが「Artist:」などの部分はどのようにファイルへ書き込めばいいのでしょうか。
ファイル操作が全くわかっていない状況です。
参考サイトなど ありましたら教えてください。
よろしくお願いします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_07.png?8acaa2e)
No.5
- 回答日時:
#1です。
>Artist: list[0].artist
>Title: list[0].title
>Year: list[0].year
↑の書式にこだわりますか?
私だったら↓のようにします。
int i;
fputs("Artist, Title, Year\n", fp); /* 項目名 */
for(i = 0; i < 100; i++)
{
fprintf(fp, "\"%s\", \"%s\", %d\n", list[i].artist, list[i].title, list[i].year); /* 各データを1行で出力 */
}
こうやって出力するファイル名の拡張子を .CSV とします。もし、エクセルをお使いであれば、このファイル名をダブルクリックすると、エクセルで開けるかもしれません。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_04.png?8acaa2e)
No.4
- 回答日時:
> fprintf(fp, "Artist: %s\n Title: %s\n Year: %d\n\n", list[i].artist, list[i].title, year);
> として保存されたファイル(txt)をみると2番目から
> Artist:
> list[i].artist
とのことですが、考えられるのは、データの先頭に本当に改行が入っているということです。
このあたりは、データの入力方法がわからないと、何とも言えません。
特に、「2番目から」とのことなので、前のデータのゴミが残っているとか、そういう話なのかもしれません。
No.3
- 回答日時:
fwrite((struct music *)list,sizeof(struct list),100,fp);
->
fwrite((struct music *)list,sizeof(struct list)*100,1,fp);
ではないかと。
回答ありがとうございます。
>fwrite((struct music *)list,sizeof(struct list)*100,1,fp);
というのはlist 100個分のサイズということでしょうか。
No.2
- 回答日時:
第一印象からすると、
struct music{
char artist[256];
char title[256];
int year;
}list[100];
で、
fwrite(list,sizeof(list[0]),100,fp);
が正解だと思われます。
char *artist[256]; だと、アーティスト名を 256 人分保存出来ますよ。
char artist[256]; は、最大 256 文字のアーティスト名ひとり分です。
sizeof(struct list) は、エラーになりませでしたか?(チェックしていません)
sizeof(struct music) か、sizeof(list[0]) かいずれかのはずですが。
あわせて、aritist や title への代入の仕方もおそらく間違っています。
(いや、文法的には間違っていないかも)
> とするとyearが表示されません。
とのことなので、保存されたファイルをエディタなどで読みたいというところでしょうか?
もしも、そういうことであれば、
int i;
for(i = 0; i < 100; i++)
{
fprintf(fp, "Artist: %s\n Title: %s\n Year: %d\n\n", list[i].artist, list[i].title, year);
}
と別々に書き込む必要があります。
回答ありがとうございます。
>char *artist[256]; だと、アーティスト名を 256 人分保存出来ますよ。
char artist[256]; は、最大 256 文字のアーティスト名ひとり分です
ポインタもイマイチわかってないです。
例のとおりにかいてみただけです………
>sizeof(struct list) は、エラーになりませでしたか?(チェックしていません)
sizeof(struct music) か、sizeof(list[0]) かいずれかのはずですが。
間違えました、エラー出ますね(汗
>保存されたファイルをエディタなどで読みたいというところでしょうか?
はい、そうです。
fprintf(fp, "Artist: %s\n Title: %s\n Year: %d\n\n", list[i].artist, list[i].title, year);
として保存されたファイル(txt)をみると2番目から
Artist:
list[i].artist
と改行が入ってしまうのですが、何故でしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- Visual Basic(VBA) リストボックスに表示されたファイルを削除したい 1 2023/04/19 12:02
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- その他(プログラミング・Web制作) python 3.10で 同じlistに同じ構文で同じデータ代入した結果が異なる現象発生 7 2022/06/18 11:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PerlでXMLを解析して出力する。
-
C# GetFilesで複数のファイルの...
-
python3でのリスト作成について...
-
Python - Excel で Webからデー...
-
Application.ScreenUpdating = ...
-
16進の10進変換について
-
SELECT要素について
-
複数列を持ったリストボックス...
-
JSONで文字列が長い時
-
TeraPadでよく使う文字を特定キ...
-
awk の int()に関数について
-
文字の横にプルダウンを表示さ...
-
CGI メールフォームからBCCのア...
-
メモリをアドレスを直接指定し...
-
セグメンテーション違反
-
CGI初心者です
-
UWSC:ポップアップウインドウ...
-
シェルスクリプトで、空白(ス...
-
確認画面に空白がでます
-
formで特定のinputを送信しない...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Python - Excel で Webからデー...
-
どちのほうがすきですか?
-
【python】辞書作成(ネスト)を...
-
C# GetFilesで複数のファイルの...
-
Scheme 中置式から後置式へ
-
Pythonでリストの要素の順番を...
-
C言語:単語カウント
-
可変引数をconstで参照渡し
-
PerlでXMLを解析して出力する。
-
STLのlistで重複するものだけを...
-
複数のIP取得
-
Ademの関係(Schemeについて教...
-
ギブアップ!!
-
リストの中のDataFrameに他のDa...
-
C言語:ファイル操作
-
python3でのリスト作成について...
-
texで"図"または"Fig"を外したい
-
プログラミングの問題について...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
おすすめ情報