掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.23998

ファイルについて
投稿者---help(2005/11/08 11:05:30)


自分なりに考えてみて流れ的なものは作れたのですが、
これをどうやって1つのソースにしていくかよく分かりません。
あと下記の※印の部分はよくわかりませんでした。
だれか教えていただけると大変助かります。
よろしくお願いいたします。  
・構造体
struct address{
 char name[20] //氏名
char address[80] //住所
 char Tel[12] //電話番号
char memo[80] //メモ
char yubin[8] //郵便番号
}Address;
・ 関数のプロトタイプ宣言→ジャンプテーブルに入れるため引数,返却値型はすべて同じとした
int Add(Address *ap, int cnt); //登録
int Updata(Address *ap, int cnt); //更新
int Display(Address *ap, int cnt); //1件データ参照
int Report(Address *ap, int cnt); //レポート表示
・ 関数のジャンプテーブル int (*func[])(Address *, int) = { Add, Updata, Display, Report };
・ メイン関数
int mian(void)
{  
while (1){
  int i=0;
  int cnt=0;  //登録住所録カウント
   puts (“メニューを選択してください。\n”);
  puts (“1,登録 2,更新 3,1件データ参照 4,レポート表示 5,終了\n”);
  scanf (“%d”,&i);
   if ((1<=i && i<=4 ) cnt=func[i-1](ad,cnt)){
   else if (i==5){
    break;
  }
  else (i>5|| i= =0){
   printf (““エラーコード:2\nメッセージ:選択さてた番号は、不正です。\n重要度:軽\n”);
  }
}
 return 0;
}
 ‥佻
1、ファイルをオープンする。(fopen使用)
 fp = fopen (“add.c”,”w”);
 if (fp= =NULL){
  printf (“ファイルオープン不可\n”);
 }
 else {
  printf (“ファイルオープン\n”);
 }
2、fseekを用いてEOFまで移動
 int fseek (fp, EOF, SEEK_SET);
 if (feof (fp) ){
  printf (“ファイルポインタはEOFに移動しました。\n”);
 }
 else {
 printf (“エラーコード:3\nメッセージ:ファイルポインタの移動に失敗しました。\n重要度:中\n”);
 }
3、構造体(Address)に情報入力(fwrite使用)
※データ入力のプログラムを作成
4、ファイルをクローズする。(fclose使用)
 fclose (fp);
 printf (“ファイルをクローズしました。\n”);
◆々洪
1、ファイルをオープンする。(fopen使用)
 fp = fopen (“updata.c”,”w”);
 if (fp= =NULL){
   printf (“ファイルオープン不可\n”);
 }
 else {
   printf (“ファイルオープン\n”);
 }
2、更新データの検索
 ・ 何番目のデータにするか選択
 while (1){
 puts (“先頭から何番目を更新しますか?\n”)
 scanf (“%d”,&i);
 if (0<=i && i<=入力住所録数){
 break;
}
 int fseek (fp, i, SEEK_SET);
 if (fp==NULL){
  printf (“検索に失敗しました。\n”);
 }
3、更新の意思確認
 while (1){
 puts (“本当に更新しますか?1、Yes 2、Cancel \n”);
 scanf (“%d”,&select);
  if (select= =1|| select= =2){
break;
  }
 }
・ 更新意思あり
 if (select= =1){
  ※データ更新のプログラムを作成
 ・ 更新意思なし
 if (select= =2){
  printf (“更新しません。\n”);
   break;
 }
4、ファイルをクローズする。(fclose使用)
 fclose (fp);
 printf (“ファイルをクローズしました。\n”);
 1件データ表示
1、ファイルをオープンする。(fopen使用)
 fp=fopen (“display.c”,”r”);
 if (fp= =NULL){
  printf (“ファイルオープン不可\n”);
 }
 else {
  printf (“ファイルオープン\n”);
  }
2、何番目のデータにするか選択
 while (1){
 puts (“先頭から何番目を更新しますか?\n”)
 scanf (“%d”,&i);
 if (0<=i && i<=入力住所録数){
 break;
 }
 int fseek (fp, i, SEEK_SET);
 if (fp==NULL){
  printf (“検索に失敗しました。\n”);
  }
3、選択したデータを表示
 ※選択したデータの表示プログラムの作成
4、選択したデータでよいか判定する。
 while (1){
puts (“メッセージ:このデータでよいですか? 1、Yes2、Cancel \n”);
 scanf (“%d”,&i);
 if(i= =1 || i= =2){
 break;
 }
  else if (i !=1 && i !=2){
  printf (“エラーコード:4\nメッセージ:不正な値が入力されました。再入力してください。\n重要度:軽\n”);
  }
・ 判定でCancelを選択した場合
 Cancel(-1)を返す。
5、ファイルをクローズする。(fclose使用)
fclose (fp);
printf (“ファイルをクローズしました。\n”);



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ファイルについて 23999 RiSK 2005/11/08 11:35:13


No.23999

Re:ファイルについて
投稿者---RiSK(2005/11/08 11:35:13)


>ソースの添付は「HTML変換ツール」で字下げします。
>マルチポスト(多重投稿)はしません。
苦しんで覚えるC言語掲示板

念のため
>返信の付いた投稿は削除しません。


この投稿にコメントする

削除パスワード

No.24007

Re:ファイルについて
投稿者---黒ぺけじぇー(2005/11/08 16:21:35)


勉強のつもりでちょっと考えてみました。(登録処理の部分だけ)

//以下、メイン処理

int main(void){

    int i;

    while(1){

        puts("メニューを選択してください。\n");
        puts("1,登録 2,更新 3,1件データ参照 4,レポート表示 5,終了\n");
        printf("番号入力 --> ");
        scanf ("%d",&i);

        switch(i){
        case 1  : Registration();   //登録処理ルーチン

              break;
        case 2  : Update();  //更新処理ルーチン

              break;
        case 3  : Reference();    //1件データ参照ルーチン

              break;
        case 4  : Display();        //レポート表示ルーチン

              break;
        case 5  : return 0;
              break;
        default : puts("エラーコード:2\nメッセージ:選択された番号は、不正です。\n重量度:軽\n");
              break;
        }
    }
}

//以下、登録処理ルーチン

void Registration(void){

    FILE    *fp;
    char    name[20];   //氏名

    char    address[80];    //住所

    char    Tel[12];    //電話番号

    char    memo[80];   //メモ

    char    yubin[8];   //郵便番号

    int ans;

    puts("メニュー:登録\n");

    if((fp=fopen("add.txt","a"))==NULL){
        puts("ファイルオープン不可\n");
        exit(1);
    }

    printf("氏名入力 --> ");
    scanf("%s",name);
    printf("住所入力 --> ");
    scanf("%s",address);
    printf("電話番号入力 --> ");
    scanf("%s",Tel);
    printf("メモ入力 --> ");
    scanf("%s",memo);
    printf("郵便番号入力 --> ");
    scanf("%s",yubin);

    while(1){
        puts("\n登録しますか? 1,Yes 2,Cancel\n");
        printf("番号入力 --> ");
        scanf("%d",&ans);
        if(ans==1){
            fprintf(fp,"%s,%s,%s,%s,%s\n",name,address,Tel,memo,yubin);
            fclose(fp);
            puts("登録しました。\n");
            break;
        }
        if(ans==2){
            puts("登録しません。\n");
            break;
        }
        if(ans!=1 || ans!=2){
            puts("エラーコード:2\nメッセージ:選択された番号は、不正です。\n重量度:軽\n");
        }
    }
}



こんな感じじゃぁ、だめですかね〜?


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧