たびたび失礼します。
たびたび失礼します。
下記ってもう少しスリムにならないですか??
これ以上の仕方がわからないので・・・お願いしまうす。
if((out = fopen("eep_size.txt", "r+")) == NULL){
printf("ファイルがありません。作成します。\n");
out = fopen("eep_size.txt", "w");
}
else if((out = fopen("eep_size.txt", "r+")) != NULL){
printf("ファイルが存在します\n");
printf("上書きしますか? yes/no \n");
scanf("%3s", answer);
if(strcmp(answer, "yes") == 0){
out = fopen("eep_size.txt", "w");
}
else{
fclose(in);
printf("終了します\n");
exit(0);
}
}
これ以上の仕方がわからないので・・・お願いしまうす。
if((out = fopen("eep_size.txt", "r+")) == NULL){
printf("ファイルがありません。作成します。\n");
out = fopen("eep_size.txt", "w");
}
else if((out = fopen("eep_size.txt", "r+")) != NULL){
printf("ファイルが存在します\n");
printf("上書きしますか? yes/no \n");
scanf("%3s", answer);
if(strcmp(answer, "yes") == 0){
out = fopen("eep_size.txt", "w");
}
else{
fclose(in);
printf("終了します\n");
exit(0);
}
}
Re:たびたび失礼します。
ファイルの中の文字列を検索してtxtに書き込みをするんですが、
任意で入力したtxtが存在すれば「上書き」をするかとか、ないと
きは「新規」にtxtを作成するっていうものを作っています。
上のはその一部で、その部分がもっと簡単にできるとかないかなぁっと思って…。
なかったら良いのですが…。
任意で入力したtxtが存在すれば「上書き」をするかとか、ないと
きは「新規」にtxtを作成するっていうものを作っています。
上のはその一部で、その部分がもっと簡単にできるとかないかなぁっと思って…。
なかったら良いのですが…。
Re:たびたび失礼します。
wだけだったら新規作成しますか?とかができなくなりますね。
失礼しました。
見やすいまま行数を減らしたいんですか?
それとも、文字数を減らしたいんですか?
もっときれいなやり方はありますか?ってことですか?
(または効率のいい)
どれかだとは、思いますけど…
=============
すいません。投稿がかぶりました。
(タイミングが…)

失礼しました。
見やすいまま行数を減らしたいんですか?
それとも、文字数を減らしたいんですか?
もっときれいなやり方はありますか?ってことですか?
(または効率のいい)
どれかだとは、思いますけど…
=============
すいません。投稿がかぶりました。
(タイミングが…)

Re:たびたび失礼します。
プログラム面では削れるもしくは書き換えるのはif文の中ぐらいなのでそれ以外の
書き方で行数をへらしてみます。
(少し見ずらくなったらごめんなさい)
/*
printf("ファイルが存在します\n");
printf("上書きしますか? yes/no \n");
*/
<tt>
printf("ファイルが存在します\n"
"上書きしますか?yes/no \n");
</tt>
行数は変わらないけど…
/*
if(strcmp(answer, "yes") == 0){
out = fopen("eep_size.txt", "w");
}
else{
*/
赤色削るとか?
結果一行のみ削れた…ダメですね。
================
むしろこれ削れます?
//if((out = fopen("eep_size.txt", "r+")) != NULL)

書き方で行数をへらしてみます。
(少し見ずらくなったらごめんなさい)
/*
printf("ファイルが存在します\n");
printf("上書きしますか? yes/no \n");
*/
<tt>
printf("ファイルが存在します\n"
"上書きしますか?yes/no \n");
</tt>
行数は変わらないけど…
/*
if(strcmp(answer, "yes") == 0){
out = fopen("eep_size.txt", "w");
}
else{
*/
赤色削るとか?
結果一行のみ削れた…ダメですね。
================
むしろこれ削れます?
//if((out = fopen("eep_size.txt", "r+")) != NULL)

Re:たびたび失礼します。
とりあえず、
... fclose(out); out = NULL; // 上書きしないときは exit してるからこれはいらないかも printf("ファイルが存在します\n"); ...とするべきかと。まず正しく動かすことが重要です。
Re:たびたび失礼します。
効率がいいかどうか分かりませんが。。。
----
out = fopen("eep_size.txt", "r+");
if( out == NULL ){
printf("ファイルがありません。作成します。\n");
out = fopen("eep_size.txt", "w");
} else {
printf("ファイルが存在します\n");
printf("上書きしますか? yes/no \n");
scanf("%3s", answer);
if(strcmp(answer, "yes") == 0){
/*fclose(out)は要らない?*/
out = fopen("eep_size.txt", "w");
}
}
if ( out == NULL ){
fclose(in);
printf("終了します\n");
exit(0);
}
----追記
↓のパコネコさんのご指摘にあるように、
上のソースは間違っています。

----
out = fopen("eep_size.txt", "r+");
if( out == NULL ){
printf("ファイルがありません。作成します。\n");
out = fopen("eep_size.txt", "w");
} else {
printf("ファイルが存在します\n");
printf("上書きしますか? yes/no \n");
scanf("%3s", answer);
if(strcmp(answer, "yes") == 0){
/*fclose(out)は要らない?*/
out = fopen("eep_size.txt", "w");
}
}
if ( out == NULL ){
fclose(in);
printf("終了します\n");
exit(0);
}
----追記
↓のパコネコさんのご指摘にあるように、
上のソースは間違っています。

Re:たびたび失礼します。
> あれ?
> YESじゃないときの処理が削られてる…最後のはなんでinを閉じるんですか?
> ミス?
ををぅ、ミスですね。
No:57020は忘れてください。
#Yesじゃない時の処理がプログラム終了とは思わなかったので
#読み違えちゃいました。。
> YESじゃないときの処理が削られてる…最後のはなんでinを閉じるんですか?
> ミス?
ををぅ、ミスですね。
No:57020は忘れてください。
#Yesじゃない時の処理がプログラム終了とは思わなかったので
#読み違えちゃいました。。
Re:たびたび失礼します。
ほとんどあってると思うので、忘れる必要もないような気が・・・
YESじゃないときの処理付け足して
最後にアウトで閉じたら完成なのでは?
いい形にできてると思う。
YESじゃないときの処理付け足して
最後にアウトで閉じたら完成なのでは?
いい形にできてると思う。
Re:たびたび失礼します。
if ((out = fopen("eep_size.txt", "r")) != NULL) { fclose(out); printf("ファイルが存在します\n"); printf("上書きしますか? yes/no \n"); scanf("%3s", answer); if (strcmp(answer, "yes") != 0) { fclose(in); printf("終了します\n"); exit(0); } } else { printf("ファイルがありません。作成します。\n"); } out = fopen("eep_size.txt", "w");何か足らないですかね。
Re:たびたび失礼します。
初めまして、横から失礼します。
こんな感じではどうでしょうか?
if((out = fopen("eep_size.txt","r")) != NULL){
printf("ファイルが存在します\n上書きしますか? yes/no\n");
scanf("%3s",answer);
if(strcmp(answer,"yes") == 0){
out = fopen("eep_size.txt","w");
}
}
else{
printf("ファイルがありません。作成します。\n");
out = fopen("eep_size.txt","w");
}
fclose(out);
printf("終了します\n");
exit(0);
帰り際に急いで考えたので、動くかどうかはちょっと怪しいですが・・・
"終了します"の文字位置はここではいけないのでしょうか?
それと、この部分だけのコードですとどうしても最後のfcloseが
inではおかしいように思えます。
ISLeさんは想像しますと書いていますが、私たちは分からないので、ある部分だけで判断してしまうと思うので、ここはfclose(out)というようにしました。
すみません、急いでいるので何を書いているのか自分でもちんぷんかんぷんなので^^;
こんな感じではどうでしょうか?
if((out = fopen("eep_size.txt","r")) != NULL){
printf("ファイルが存在します\n上書きしますか? yes/no\n");
scanf("%3s",answer);
if(strcmp(answer,"yes") == 0){
out = fopen("eep_size.txt","w");
}
}
else{
printf("ファイルがありません。作成します。\n");
out = fopen("eep_size.txt","w");
}
fclose(out);
printf("終了します\n");
exit(0);
帰り際に急いで考えたので、動くかどうかはちょっと怪しいですが・・・
"終了します"の文字位置はここではいけないのでしょうか?
それと、この部分だけのコードですとどうしても最後のfcloseが
inではおかしいように思えます。
ISLeさんは想像しますと書いていますが、私たちは分からないので、ある部分だけで判断してしまうと思うので、ここはfclose(out)というようにしました。
すみません、急いでいるので何を書いているのか自分でもちんぷんかんぷんなので^^;
Re:たびたび失礼します。
> ISLeさんは想像しますと書いていますが、私たちは分からないので、ある部分だけで判断してしまうと思うので、ここはfclose(out)というようにしました。
inについては想像するしかできませんが、質問のコードでは最後のブロックを抜けたところでoutが"w"モードでオープンされているので、それは必要条件になるのではないかと。
inについては想像するしかできませんが、質問のコードでは最後のブロックを抜けたところでoutが"w"モードでオープンされているので、それは必要条件になるのではないかと。
Re:たびたび失礼します。
>ISLeさん
まあ、inであってもoutであっても、黒猫さんが合っているやりかたで
やってもらえばどちらでもいいと思います。
とりあえず私はoutではないかと、思ったものなので
まあ、inであってもoutであっても、黒猫さんが合っているやりかたで
やってもらえばどちらでもいいと思います。
とりあえず私はoutではないかと、思ったものなので
Re:たびたび失礼します。
たくさんの回答ありがとうございます。
皆さんの回答を参考にさせていただきます。
因みに言うと、載せているソースは上下に続きがあるので、混乱されたと思います。
上に読み込み(in)がオープンしているので、書き込みファイルをyes以外(no)にすると
ファイルをクローズしてプログラムが終了します。
皆さんの回答を参考にさせていただきます。
因みに言うと、載せているソースは上下に続きがあるので、混乱されたと思います。
上に読み込み(in)がオープンしているので、書き込みファイルをyes以外(no)にすると
ファイルをクローズしてプログラムが終了します。

Re:たびたび失礼します。
終わったみたいなのでいいんですけど…かたっぽだけなんですね。
inはともかくoutは閉じないんですね。
いっそinも閉じなきゃいいのに…と、愚痴っときます。
inはともかくoutは閉じないんですね。
いっそinも閉じなきゃいいのに…と、愚痴っときます。