ページ 11

ファイル出力すると文字化け(C言語)

Posted: 2012年10月20日(土) 10:29
by Jimmy

コード:

#include<stdio.h>
#include<time.h>
#define MAX 50

int main() {
	int array[MAX];
	int i;
	FILE *fp;
	
	fp = fopen("test.txt", "w");
	
	// 乱数代入
	srand((unsigned)time(NULL));
	for(i = 0; i < MAX; i++) {
		fprintf(fp,"%d ",array[i] = rand()%10);
		printf("%d ",array[i]);
	}
	
	fclose(fp);
	return 0;
}
このように文字化けします↓
‷′‴′‶‹‹‶″″‰‴‶‱‰‸″″‱‶‵‷‰″‹‰‶‸‰‸‸‱‸′‸‶‷‵‹‴‱‴‱‱‱‹‰‵′‶

15行目の%dのあとの半角スペースを取り除けば、思い通りの結果になります。
ですが、半角スペースを入れたいので、質問させていただきました。原因を教えてください。

Re: ファイル出力すると文字化け(C言語)

Posted: 2012年10月20日(土) 11:30
by softya(ソフト屋)
当方の環境では、文字化けしません。
当方の環境:Visual C++2008コマンドライン cl test.cでコンパイル。

Re: ファイル出力すると文字化け(C言語)

Posted: 2012年10月20日(土) 12:59
by tk-xleader
質問するときは、コンパイル環境と、実行環境を書きましょう。書いてない場合、回答者の側がその現象を再現することができない場合があります。

Re: ファイル出力すると文字化け(C言語)

Posted: 2012年10月20日(土) 16:12
by ホヅミ
ファイルに書き込んだら最後は改行コードを入れてあげてください
バイナリ上では正常に書き込まれていますが、メモ帳では文字化けして表示されてしまいます。
バイナリエディタでアスキーコードとにらめっこするとわかりやすいと思います。

Re: ファイル出力すると文字化け(C言語)

Posted: 2012年10月20日(土) 20:17
by Jimmy
皆さんありがとうございます。環境が関わることということがわかりました。
それから、最後に改行コードちゃっといれるようにします。