以下のfiledata[8]に格納してある文字列を2進数に変換して出力したいです。
条件として、1バイト区切りにカンマを格納したい。
イメージとしては、以下の様に出力したい
↓ファイル.txtの中身(左からABCDEF)
/////////////////////////////////////////////////////////////////////
01000001,01000010,01000011,01000100,01000101,01000110, 01000111
/////////////////////////////////////////////////////////////////////
C
1int main() 2{ 3 FILE *pFile; // ビット出力用ファイルポインタ 4 char filedata[8] = { "ABCDEFG" }; // 終端はNULL 5 char str[71]; // ビット格納用配列 8*8ビット+1バイト区切りで【,】を格納 6 int rcount = 71; // 8バイトカウント 7 // 出力用配列初期化 8 memset( str, 0x00, sizeof( str ) ); 9 // ファイルオープン 10 pFile = fopen( "./bitFile.txt", "w" ); 11 12 for ( int count = 0; count < 8; count++ ) 13 { 14 int beforeBit = filedata[count] - '0'; // 該当番地の文字を数値として抜き出す 15 int bit = 1; // マスクビット 16 int bitcount = 8; // 8ビットカウント 17 while (1) 18 { 19 // 対象が0の場合は確認完了 20 if (( beforeBit == 0 ) && ( bitcount <= 0 ) ) 21 { 22 break; 23 } 24 // 該当ビットを抜き出す。 25 str[rcount] = beforeBit & bit; 26 // 次のビットへ移動 27 beforeBit = beforeBit >> 1; 28 rcount--; 29 bitcount--; 30 } 31 // 8バイト区切り文字を格納 32 str[rcount] = ','; 33 rcount--; 34 } 35 36 // ファイル出力 37 fprintf( pFile, "%s\n", str ); 38}
上記処理の場合、
fprintf( pFile, "%s\n", &str );を実行後に
↓の様な例外が発生してしまいます。
Run-Time Check Failure #2 - Stack around the variable 'str' was corrupted.
strの領域問題と考えstr[256]の様に大きめに確保しても同様のエラーが出ております。
どうしたら正常にファイル出力が行えるでしょうか?
また、もっと簡単に文字列→2進数に変換してファイルへ出力する方法がございましたら教えていただきたいです。
回答3件
あなたの回答
tips
プレビュー