題名の通りファイル操作について質問させていただきます。
ファイルから文字列を読み込みその文字列をバイナリファイルで出力し、そのバイナリファイルを読み込みたいのですがうまくいきません。
理由はわかりませんが、バイナリファイルをうまく読み込めていない状態です。
また、文字列をバイナリファイルで出力してもメモ帳等で開くと普通に読めるのでしょうか。
数字で試したときは関係のない文字等が出てきたのですが文字列をバイナリで出力しても変わりありません。
その時、改行が無効になってしまいます。
(元:おはよう。(改行)→(改行)→こんにちは。 出力後:おはよう。こんにちは。 という状態です)
自分は下記のようなプログラムにしています。コンパイルエラーはありません。
OSは[Windows Vista]で開発環境は[Microsoft Visual C++ 2008 Express Edition]です。
// 以下プログラム
#include <stdio.h>
#include <string.h>
// 警告防止用
#pragma warning( disable: 4996 )
int main(int argv,char *argc[/url])
{
FILE *fp; int loop = 0; char str1[3][256] = {}; char str2[3][256] = {}; // 読み込み(事前にname.txtというファイルを作成して文字列を入力しました) if(!(fp = fopen("name.txt", "r+"))){[pre] perror("ファイルの読みに失敗しました。"); return -1;}
for(loop = 0; loop < 3;loop++)
fgets(str1[loop],256,fp);fclose(fp);
// 確認用
for(loop = 0; loop < 3;loop++)
printf("str1 = %s",str1[loop]);// バイナリモードで書き込み
fp = fopen( "name_r.txt", "wb");
for(loop = 0; loop < 3;loop++)
fwrite(str1[loop],sizeof(char),strlen(str1[loop]),fp);fclose(fp);
// バイナリモードで読み込み
fp = fopen( "name_r.txt", "rb");
for(loop = 0; loop < 3;loop++)
fread(str2[loop],sizeof(char),strlen(str2[loop]),fp);fclose(fp);
// 確認用
for(loop = 0; loop < 3;loop++)
printf("str2 = %s",str2[loop]);return 0;[/pre]
}
// 以上
どのように訂正したらよいのでしょうか?
よろしくお願いします。