にバイナリ配列を置くために:私は配列を持ってどのようにバイナリファイル
int a[5] = { 1, 0, 0, 1, 1 };
テキストファイルにすべての要素を置くためにループを使用して、ファイルのサイズは5バイトになります。だから私はサイズが5ビットになるようにバイナリファイルに5つの要素を配置したい。どうやってやるの?
にバイナリ配列を置くために:私は配列を持ってどのようにバイナリファイル
int a[5] = { 1, 0, 0, 1, 1 };
テキストファイルにすべての要素を置くためにループを使用して、ファイルのサイズは5バイトになります。だから私はサイズが5ビットになるようにバイナリファイルに5つの要素を配置したい。どうやってやるの?
ファイルに5つのバイトを書き込みたい場合は、あなたがタイプunsigned char
を使用し、バイナリとして出力ファイルを開く必要があります。
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
unsigned char a[5] = { 1, 0, 0, 1, 1 };
FILE *fp = fopen("filename", "wb");
if (fp == NULL) {
fprintf(stderr, "cannot open filename: %s\n", strerror(errno));
exit(1);
}
if (fwrite(a, 1, 5, fp) != 5) {
fprintf(stderr, "cannot write to filename: %s\n", strerror(errno));
fclose(fp);
exit(1);
}
fclose(fp);
return 0;
}
ご質問はリッテ紛らわしいです:
ので、 5つの要素をバイナリファイルに入れてサイズが5ビットになるようにしたい。
ほとんどのシステムでは、個々のビットを書き込むことができないファイル、ファイルサイズはビット数ではなく、通常は8ビット幅のバイト数で表されます。バイトの5ビットを指定された値に設定できますが、バイトのビット数を決める必要があります...
ビットが最下位から最上位まで番号が付けられている場合、ここで行うことができますこれは:
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
/* assuming array `a` contains bit values */
int a[5] = { 1, 0, 0, 1, 1 };
int main(void) {
FILE *fp = fopen("filename", "wb");
unsigned char b;
if (fp == NULL) {
fprintf(stderr, "cannot open filename: %s\n", strerror(errno));
exit(1);
}
for (int i = 0; i < 5; i++) {
b |= a[i] << i;
}
fputc(b, fp);
fclose(fp);
return 0;
}
バイナリファイルに 'fwrite'するだけです。本当に、何が問題なのですか? –
@EugeneSh。元のポストを見てください –
Hm。なぜそれを編集したのですか?編集は明らかに矛盾しています。 @dbush –