添付ファイルのソースをご覧頂きたく思います。
データを変更する関数内の「データを変更します。よろしいですか」で「N」を入力した際、「変更する項目番号は?」のところに戻りたいのですが、どうすれば戻れるでしょうか?
それと、変更データを入力したあと変更データ以外のデータが文字化けするのですが…
何か解決策があれば教えていただけると幸いです;
住所録プログラムで…
Re:住所録プログラムで…
とりあえず文字化けを直してみました。
ざっと見ただけなので、他にもダメなところがあるかもしれません。
直したところはmain関数(あまり関係ないかも)、shinki関数、henkou関数です。
shinki関数は
です。
実際の変更は添付ファイルを見てください。
henkou関数の
*temp = afterdata;
だと、変更していない他のメンバも変えてしまっていると思います。
他にもいい方法があると思いますが、
こんなかんじにswitch文を使って分けました。
追記
のようにgoto文を使ってみるとか
ざっと見ただけなので、他にもダメなところがあるかもしれません。
直したところはmain関数(あまり関係ないかも)、shinki関数、henkou関数です。
shinki関数は
switch(ans){ case 'Y': case 'y': /* テンポラリデータの文字列をコピー */ *data = temp; //<--変更箇所 printf("◆登録完了◆\n\n"); cnt++; break; case 'N': case 'n': printf("---登録しませんでした---\n\n"); break; default: printf("---YかNを入力してください---\n\n\n"); continue; }でhenkou関数は
switch(ans){ case 'Y': case 'y': for(i=no-1;i<cnt-1;i++){ data = data[i+1]; } *temp = afterdata; //<--変更箇所 printf( "◆変更完了◆\n\n"); cnt--; break; case 'N': case 'n': printf("---変更しませんでした---\n\n"); break; default: printf("---YかNを入力してください---\n\n\n"); continue; }
です。
実際の変更は添付ファイルを見てください。
henkou関数の
*temp = afterdata;
だと、変更していない他のメンバも変えてしまっていると思います。
他にもいい方法があると思いますが、
switch(koumoku){ case 1: strcpy(temp->name,afterdata.name); break; case 2: strcpy(temp->yubin,afterdata.yubin); break; case 3: strcpy(temp->add,afterdata.add); break; case 4: strcpy(temp->tel,afterdata.tel); break; case 5: strcpy(temp->sei,afterdata.sei); break; }
こんなかんじにswitch文を使って分けました。
追記
Label1: printf("変更する項目番号は?(99:終了)"); ・ ・(省略) ・ case 'N': case 'n': goto Label1;
のようにgoto文を使ってみるとか
Re:住所録プログラムで…
回答ありがとうございます。
変更関数内でswitch文を使ってみたところ、他の住所登録者の名前も変更されてしまうのですが…;
どうしたら直るでしょうか??;
変更関数内でswitch文を使ってみたところ、他の住所登録者の名前も変更されてしまうのですが…;
どうしたら直るでしょうか??;
Re:住所録プログラムで…
私が今回添付したファイルでも文字化けしますか?
今気付いたのですが、henkou関数内の
はどういう意図で書かれました?
sakujo関数にもあるようにずらしているみたいですが、henkou関数でも必要ですか?
なので添付したファイルはそこをコメントアウトしています。
後goto文を使って「変更する項目番号は?」のところに戻るようにしています。
もし直らなければもう一度ファイルを添付していただけますか?
今気付いたのですが、henkou関数内の
for(i=no-1;i<cnt-1;i++){ data = data[i+1]; }
はどういう意図で書かれました?
sakujo関数にもあるようにずらしているみたいですが、henkou関数でも必要ですか?
なので添付したファイルはそこをコメントアウトしています。
後goto文を使って「変更する項目番号は?」のところに戻るようにしています。
もし直らなければもう一度ファイルを添付していただけますか?
Re:住所録プログラムで…
回答ありがとうございます。
変更関数内の
for(i=no-1;i<cnt-1;i++){
・
・
}
の部分をなくしたら問題なくできました!
ありがとうございました!
変更関数内の
for(i=no-1;i<cnt-1;i++){
・
・
}
の部分をなくしたら問題なくできました!
ありがとうございました!