ファイルのバイナリを読み込んで、そのバイナリをファイルに16個書き込んだら改行を書き込みたいのですが、うまい方法が見つかりません。
C言語でvisual stdioです。
分かる方いましたら、よろしくお願いします!
#include <string.h> #include <stdio.h> #include <stdlib.h> void BinaryMake(FILE *ifp, FILE *ofp) { fseek(ifp, 0L, SEEK_END); long fsize = ftell(ifp); fseek(ifp, 0L, SEEK_SET); unsigned char *BinaryText = malloc(fsize); fread(BinaryText, sizeof(*BinaryText), fsize, ifp); int i = 0; fprintf(ofp, "Binary Out.\n\n"); // Make BinOut. fprintf(ofp, "unsigned char BinOut[] = {\n"); for (i = 0; i < fsize; i++) { fprintf(ofp, "0x%X, ", BinaryText[i]); // 16の倍数で改行をファイルに書き込みたい。 if (i != 0) { if (i > 16) { if (i % 16 == 0) { fprintf(ofp, "\n"); } } else if (i % 15 == 0) { fprintf(ofp, "\n"); } } } fprintf(ofp, "\n};\n\n"); // BinOutLen. fprintf(ofp, "unsigned int BinOutLen = "); fprintf(ofp, "%d", i); fprintf(ofp, ";\n"); free(BinaryText); } int main(int argc, char *argv[]) { FILE *fIN; FILE *fOUT; errno_t error; char buf[255 + 1]; if ((error = fopen_s(&fIN, "C://Projects/test_curl/Debug/StinkyShitInDaMazafaka.txt", "rb")) != 0) { strerror_s(buf, 255, error); printf("fopen_s error one \n%s\n", buf); return 0; } if ((error = fopen_s(&fOUT, "C://Projects/test_curl/Debug/MazafakaInDaBinSource.txt", "w+")) != 0) { strerror_s(buf, 255, error); printf("fopen_s error two \n%s\n", buf); return 0; } BinaryMake(fIN, fOUT); fclose(fIN); fclose(fOUT); return 0; }
上のソースでファイルに書き込んだ内容の一部です。
2行目が17個目で改行が書き込まれています。
よろしくお願いします!
unsigned char BinOut[] = { 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F,
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/07 09:46