#define _CRT_SECURE_NO_DEPRECATE 1
#include <stdio.h>
#include <string.h>
int main(void)
{
FILE *fb = fopen("Number.bin", "wb"),*ft = fopen("Number.txt", "w") ;
int num = 12345;
if(fb != NULL){
fwrite(&num, sizeof(int), 1,fb);
}
fprintf(ft,"%d", num);
return(0);
}
となったのですがあってるのでしょうか?
数値をバイナリファイルに書き込み、書き込んだデータをテキストファイルへ書き込む
Re:数値をバイナリファイルに書き込み、書き込んだデータをテキストファイルへ書き込む
この処理は、
数値をバイナリ形式とテキスト形式でそれぞれ別のファイルへ書き込む
をしています。
タイトルとなっている、
「書き込んだデータ」を「読み込んでテキストファイルへ書き込む」
をしていません。
(と、解釈しましたが合っていますか?)
あと、処理をした後の fclose と、
ファイルをオープンできなかった場合の処理( ft に対して)が抜けています。
数値をバイナリ形式とテキスト形式でそれぞれ別のファイルへ書き込む
をしています。
タイトルとなっている、
「書き込んだデータ」を「読み込んでテキストファイルへ書き込む」
をしていません。
(と、解釈しましたが合っていますか?)
あと、処理をした後の fclose と、
ファイルをオープンできなかった場合の処理( ft に対して)が抜けています。
Re:数値をバイナリファイルに書き込み、書き込んだデータをテキストファイルへ書き込む
御津凪さん返信ありがとうございます!
> 「書き込んだデータ」を「読み込んでテキストファイルへ書き込む」
> をしていません。
> (と、解釈しましたが合っていますか?)
→指摘の通り、合っています。
> あと、処理をした後の fclose と、
> ファイルをオープンできなかった場合の処理( ft に対して)が抜けています。
変数名少しわかりにくかったので修正しました。
#define _CRT_SECURE_NO_DEPRECATE 1
#include <stdio.h>
#include <string.h>
int main(void)
{
FILE *sf = fopen("Number.bin", "wb"), *lf = fopen("Number.bin","rb"),*sf2 = fopen("Number.txt", "w") ;
int num = 12345;
if(sf != NULL){
fwrite(&num, sizeof(int), 1,sf);
}
if(lf !=NULL){
fread(&num, sizeof(int), 1,lf);
}
if(sf2 !=NULL){
fprintf(sf2,"%d", num);
}
fclose(sf);
fclose(lf);
fclose(sf2);
return(0);
}
こうなったのですが、いかがでしょうか?
どうかよろしくお願いします。
> 「書き込んだデータ」を「読み込んでテキストファイルへ書き込む」
> をしていません。
> (と、解釈しましたが合っていますか?)
→指摘の通り、合っています。
> あと、処理をした後の fclose と、
> ファイルをオープンできなかった場合の処理( ft に対して)が抜けています。
変数名少しわかりにくかったので修正しました。
#define _CRT_SECURE_NO_DEPRECATE 1
#include <stdio.h>
#include <string.h>
int main(void)
{
FILE *sf = fopen("Number.bin", "wb"), *lf = fopen("Number.bin","rb"),*sf2 = fopen("Number.txt", "w") ;
int num = 12345;
if(sf != NULL){
fwrite(&num, sizeof(int), 1,sf);
}
if(lf !=NULL){
fread(&num, sizeof(int), 1,lf);
}
if(sf2 !=NULL){
fprintf(sf2,"%d", num);
}
fclose(sf);
fclose(lf);
fclose(sf2);
return(0);
}
こうなったのですが、いかがでしょうか?
どうかよろしくお願いします。
Re:数値をバイナリファイルに書き込み、書き込んだデータをテキストファイルへ書き込む
そのコードで実行してみましたか?
少なくともそれで正しく処理できたかどうかは分かるはずです。
(これでは正しく処理出来ませんが)
同じファイルをそれぞれ書き込みと読み込みで同時に開けません。
なのでこの場合は、
必要になった時にファイルを開き、
書き込み(または読み込み)、
閉じる。
この一連の処理をそれぞれしたほうが良いです。
少なくともそれで正しく処理できたかどうかは分かるはずです。
(これでは正しく処理出来ませんが)
同じファイルをそれぞれ書き込みと読み込みで同時に開けません。
なのでこの場合は、
必要になった時にファイルを開き、
書き込み(または読み込み)、
閉じる。
この一連の処理をそれぞれしたほうが良いです。
Re:数値をバイナリファイルに書き込み、書き込んだデータをテキストファイルへ書き込む
>質問者さん
いかがでしょうか、と人にたずねる「前」に、
実行結果が正しいかどうかを
「自分で」確認すればよいと思います。
いかがでしょうか。
今後も、プログラムを修正するたびに
「いかがでしょうか」ですか?
自分の頭や手を使わないと、身につかないと思います。
いかがでしょうか。
いかがでしょうか、と人にたずねる「前」に、
実行結果が正しいかどうかを
「自分で」確認すればよいと思います。
いかがでしょうか。
今後も、プログラムを修正するたびに
「いかがでしょうか」ですか?
自分の頭や手を使わないと、身につかないと思います。
いかがでしょうか。
Re:数値をバイナリファイルに書き込み、書き込んだデータをテキストファイルへ書き込む
御津凪さん返信ありがとうございます。
一応下記のように修正したのですが・・・
結果は同じでした・・・。
何度もすみません。
#define _CRT_SECURE_NO_DEPRECATE 1
#include <stdio.h>
#include <string.h>
int main(void)
{
FILE *sf, *lf, *sf2;
int num = 12345;
sf = fopen("Number.bin", "wb");
if(sf != NULL){
fwrite(&num, sizeof(int), 1,sf);
}
fclose(sf);
lf = fopen("Number.bin","rb");
if(lf !=NULL){
fread(&num, sizeof(int), 1,lf);
}
fclose(lf);
sf2 = fopen("Number.txt", "w");
if(sf2 !=NULL){
fprintf(sf2,"%d", num);
}
fclose(sf2);
return(0);
}
一応下記のように修正したのですが・・・
結果は同じでした・・・。
何度もすみません。
#define _CRT_SECURE_NO_DEPRECATE 1
#include <stdio.h>
#include <string.h>
int main(void)
{
FILE *sf, *lf, *sf2;
int num = 12345;
sf = fopen("Number.bin", "wb");
if(sf != NULL){
fwrite(&num, sizeof(int), 1,sf);
}
fclose(sf);
lf = fopen("Number.bin","rb");
if(lf !=NULL){
fread(&num, sizeof(int), 1,lf);
}
fclose(lf);
sf2 = fopen("Number.txt", "w");
if(sf2 !=NULL){
fprintf(sf2,"%d", num);
}
fclose(sf2);
return(0);
}
Re:数値をバイナリファイルに書き込み、書き込んだデータをテキストファイルへ書き込む
> 一応下記のように修正したのですが・・・
> 結果は同じでした・・・。
「何」と「どう」比べて同じだったのでしょうか?
それでは何がおかしいのか分かりません。
処理の結果は最初の質問と同じ出力結果で、
タイトルにあった処理をしているはずです。
いかがでしょうか。
> 結果は同じでした・・・。
「何」と「どう」比べて同じだったのでしょうか?
それでは何がおかしいのか分かりません。
処理の結果は最初の質問と同じ出力結果で、
タイトルにあった処理をしているはずです。
いかがでしょうか。
Re:数値をバイナリファイルに書き込み、書き込んだデータをテキストファイルへ書き込む
御津凪さんありがとうございます。
何度もすみません。
投稿したNo:25785の処理とNo:25792の処理で同一の結果が得られたのでおかしいのかなと思ってしまいました。
もうちょっと、勉強して出直してきます。
御津凪さん見たいに回答できるようにがんばりたいと思います。
長々とお付き合いいただきありがとうございました。
何度もすみません。
投稿したNo:25785の処理とNo:25792の処理で同一の結果が得られたのでおかしいのかなと思ってしまいました。
もうちょっと、勉強して出直してきます。
御津凪さん見たいに回答できるようにがんばりたいと思います。
長々とお付き合いいただきありがとうございました。
Re:数値をバイナリファイルに書き込み、書き込んだデータをテキストファイルへ書き込む
>投稿したNo:25785の処理とNo:25792の処理で同一の結果が得られたのでおかしいのかなと思ってしまいました。
確かにエラーは出ないようですね。
ファイルは正しいし、見かけ上は、うまくいったように見えます。
しかし、freadは正しく読まれていないはずです。データを別の変数に読んで出力してみたら
わかると思います。
または
printf("%d",fread(&num, sizeof(int), 1,lf));
に変更してみましょう。freadは成功したら、個数を返しますから1を返さなくてはいけません。
確かにエラーは出ないようですね。
ファイルは正しいし、見かけ上は、うまくいったように見えます。
しかし、freadは正しく読まれていないはずです。データを別の変数に読んで出力してみたら
わかると思います。
または
printf("%d",fread(&num, sizeof(int), 1,lf));
に変更してみましょう。freadは成功したら、個数を返しますから1を返さなくてはいけません。
Re:数値をバイナリファイルに書き込み、書き込んだデータをテキストファイルへ書き込む
>あいらさん
こんにちは。宿題でしょうか?お疲れ様ですm(_ _)m
遅くなりました、もう解決済みでしたかね。
もし腑に落ちないことがあれば遠慮なく聞いて下さいね。
何故ここがこうなるのかとか、ココはこれでいいのかとか。
>nonさん
こんな感じになりましたが、freadは正しく実行されていないのでしょうか?
こんにちは。宿題でしょうか?お疲れ様ですm(_ _)m
遅くなりました、もう解決済みでしたかね。
もし腑に落ちないことがあれば遠慮なく聞いて下さいね。
何故ここがこうなるのかとか、ココはこれでいいのかとか。
>nonさん
こんな感じになりましたが、freadは正しく実行されていないのでしょうか?
#include <stdio.h> #include <string.h> int main(void) { FILE *sf, *lf, *sf2; int num = 12345, num2; sf = fopen("Number.bin", "wb"); if(sf != NULL){ fwrite(&num, sizeof(int), 1,sf); } fclose(sf); lf = fopen("Number.bin","rb"); if(lf !=NULL){ printf("%d\n",fread(&num2, sizeof(int), 1,lf)); printf("%d\n", num2); } fclose(lf); return(0); } 実行結果 1 12345
Re:数値をバイナリファイルに書き込み、書き込んだデータをテキストファイルへ書き込む
1個の値を読み取り、
その内容が12345、
という結果を得ています。
何ら問題ありません。
その内容が12345、
という結果を得ています。
何ら問題ありません。