はじめまして。
今プログラミングの授業で下の問題に取り組んでいるんですが、どうしていいのかいまいちよくわりません。
もしよかったら、どういうふうにやったらいいのか教えていただけませんか???
「以下の条件を満たすプログラムを作成する..
なんらかのデータを扱うプログラムであり(非常にユニークなものの場合は加点がある),データをファイルから読み込む機能と,書き込む機能がある.
自分の持っている音楽CD(コレクションしているものなど)を管理するデータベースプログラム
新しいデータ(もしくはデータの一部分)を追加する機能,特定のデータ(もしくはデータの一部分)を削除する機能がある
データのソート(並び替え)を行う機能がある. ソートを行うことが適切でないデータの場合(音声データや画像データなど)は, そのデータにあったなんらかの処理を加える機能でも良い
データから特定の部分のみを取り出して表示(もしくは保存)する機能がある
構造体を使用している
構造体のポインタを引数として持つ関数を使用している」
無題
Re:無題
返事遅れてもうしわけございません。
自分なりにできたのが以下です。
ここから削除と並び替えがどうしてもできませんでした。
なにか方法はないでしょうか。
よろしくお願いします。
自分なりにできたのが以下です。
#include<stdio.h> #include<stdlib.h> int main(void) { char file0[64]; char onngakumei[256]; int s; unsigned int m; char buff[256]; FILE *fp0; printf("\n\n"); printf(" 音楽ファイルを管理しているファイル名を入力してください。\n "); printf("存在しない場合は新規作成するファイル名を入力してください。\n"); printf("\nファイル名:"); scanf("%s",file0); printf("\n"); printf("\n 音楽ファイル管理しているプログラム名: %s\n\n",file0); if(NULL==(fp0=fopen(file0,"a+"))) { printf("\n Cannot open file : %s\n\n", file0); exit(1); } printf("現在このファイルで管理されている音楽名は下記のとおりです。\n"); printf("(新規作成した場合は空白)\n"); for(m=0;m<10000;++m) { if(NULL==fgets(buff,255,fp0)) { break; } printf("%5d: %s",1+m,buff); } if(NULL == (fp0 = fopen(file0, "a+"))) { printf("\n Cannot open file : %s\n\n", file0); exit(1); } for(s=1;s!=0;) { printf("\n 追加したい音楽名を入力してください"); scanf("%s",onngakumei); fprintf(fp0,"%s\n",onngakumei); printf("続けて入力:1\n入力を終了:0\n"); scanf("%d",&s); } printf("入力を終了します\n\n"); fclose(fp0); if(NULL==(fp0=fopen(file0,"r"))) { printf("\n Cannot open file : %s\n\n", file0); exit(1); } printf("現在管理されている音楽名は下記のとおりに変更されました\n"); for(m=0;m<10000;++m) { if(NULL==fgets(buff,255,fp0)) { break; } printf("%5d: %s",1+m,buff); } fclose(fp0); }
ここから削除と並び替えがどうしてもできませんでした。
なにか方法はないでしょうか。
よろしくお願いします。
Re:無題
不要な部分があったのでコメントアウトしておきました。
GLAY
LA'rc~en~ciel
AYUMI
と書かれたmusic.txtがあるとします。
このうち、AYUMIを消したければ、このように出来ます。
#include<stdio.h> #include<stdlib.h> int main(void) { char file0[64]; char onngakumei[256]; int s; unsigned int m; char buff[256]; FILE *fp0; printf("音楽ファイルを管理しているファイル名を入力してください。\n "); printf("存在しない場合は新規作成するファイル名を入力してください。\n"); printf("ファイル名:"); scanf("%s",file0); printf("音楽ファイル管理しているプログラム名: %s\n\n",file0); if(NULL==(fp0=fopen(file0,"a+"))){ printf("Cannot open the file. : %s\n", file0); exit(1); } printf("現在このファイルで管理されている音楽名は下記のとおりです。\n"); printf("(新規作成した場合は空白)\n"); for(m=0;m<10000;++m){ if(NULL==fgets(buff,255,fp0)) break; printf("%5d: %s",1+m,buff); } // if(NULL == (fp0 = fopen(file0, "a+"))){ // printf("\n Cannot open file : %s\n\n", file0); // exit(1); // } for(s=1;s!=0;){ printf("追加したい音楽名を入力してください:"); scanf("%s",onngakumei); fprintf(fp0,"%s\n",onngakumei); printf("続けて入力:1\n入力を終了:0\n"); scanf("%d",&s); } printf("入力を終了します\n\n"); fclose(fp0); if(NULL==(fp0=fopen(file0,"r"))){ printf("Cannot open file : %s\n", file0); exit(1); } printf("現在管理されている音楽名は下記のとおりに変更されました\n"); for(m=0;m<10000;++m){ if(NULL==fgets(buff,255,fp0)) break; printf("%5d: %s\n",1+m,buff); } fclose(fp0); }削除の仕方は、例えばこうです。
GLAY
LA'rc~en~ciel
AYUMI
と書かれたmusic.txtがあるとします。
このうち、AYUMIを消したければ、このように出来ます。
#include<stdio.h> #include<stdlib.h> int main(void){ FILE *fp0; char write[2][32]={ "GLAY", "LA'rc~en~ciel", }; if(NULL==(fp0=fopen("music.txt","w"))){ printf("Cannot open the file.\n"); exit(1); } fprintf(fp0,"%s\n",write[0]); fprintf(fp0,"%s\n",write[1]); fclose(fp0); return 0; }