teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

typo

2016/04/07 01:52

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -40,7 +40,7 @@
40
40
  fprintf(ofp, "\n};\n\n");
41
41
  ```
42
42
 
43
- tkturbotんとcatsforepawさんの回答を見ても感じるかと思いますが、「継続処理」は「本処理」の後で実行するのではなく、「本処理」の前で実行した方が「綺麗」に書けることが多いようです。
43
+ tkturbotんとcatsforepawさんの回答を見ても感じるかと思いますが、「継続処理」は「本処理」の後で実行するのではなく、「本処理」の前で実行した方が「綺麗」に書けることが多いようです。
44
44
  そして、最初だけは「継続処理」が不要になるので、それを運良くごまかせない場合は、フラグを使って分岐するのが良さそうです。
45
45
 
46
46
  ---

2

追記

2016/04/07 01:52

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -13,4 +13,36 @@
13
13
  }
14
14
  }
15
15
  fprintf(ofp, "\n};\n\n");
16
- ```
16
+ ```
17
+
18
+ ---
19
+ 【追記】
20
+ catsforepawさんの回答を見て気が付きました。`,`が最後についてしまいますね。
21
+ もし、生成されたファイルをコンパイルするようでしたら、コンパイラ(例えばVisual strudio)によっては適切にコンパイルしてくれないことがあります。
22
+
23
+ フラグが必要になることが難点ですが、このような','等を省略したい時、結構使えます。
24
+ ```C
25
+ // Make BinOut.
26
+ fprintf(ofp, "unsigned char BinOut[] = {\n");
27
+ bool first=true;
28
+ for (i = 0; i < fsize; i++) {
29
+ if (first) {
30
+ first=false;
31
+ } else {
32
+ // 16の倍数で改行をファイルに書き込みたい。
33
+ if ((i % 16) == 0) {
34
+ fprintf(ofp, "\n");
35
+ }
36
+ fprintf(ofp, ", ");
37
+ }
38
+ fprintf(ofp, "0x%X", BinaryText[i]);
39
+ }
40
+ fprintf(ofp, "\n};\n\n");
41
+ ```
42
+
43
+ tkturbotんとcatsforepawさんの回答を見ても感じるかと思いますが、「継続処理」は「本処理」の後で実行するのではなく、「本処理」の前で実行した方が「綺麗」に書けることが多いようです。
44
+ そして、最初だけは「継続処理」が不要になるので、それを運良くごまかせない場合は、フラグを使って分岐するのが良さそうです。
45
+
46
+ ---
47
+ 理想は、フラグを使わないでループ先頭の処理を分けることができると良いのです。
48
+ どなたか良い方法をご存知でしたら是非教えて下さい。

1

場所がわかりにくかったので修正

2016/04/07 01:51

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -2,8 +2,15 @@
2
2
 
3
3
  テストしてませんが、たぶん下記でいけると思います。
4
4
  ```C
5
+ // Make BinOut.
6
+ fprintf(ofp, "unsigned char BinOut[] = {\n");
7
+ for (i = 0; i < fsize; i++) {
8
+ fprintf(ofp, "0x%X, ", BinaryText[i]);
9
+ // 16の倍数で改行をファイルに書き込みたい。
5
- if ((i % 16) == 15)
10
+ if ((i % 16) == 15)
6
- {
11
+ {
7
- fprintf(ofp, "\n");
12
+ fprintf(ofp, "\n");
13
+ }
8
14
  }
15
+ fprintf(ofp, "\n};\n\n");
9
16
  ```