回答編集履歴

3

typo

2016/04/07 01:52

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
 
84
84
 
85
- tkturbotんとcatsforepawさんの回答を見ても感じるかと思いますが、「継続処理」は「本処理」の後で実行するのではなく、「本処理」の前で実行した方が「綺麗」に書けることが多いようです。
85
+ tkturbotんとcatsforepawさんの回答を見ても感じるかと思いますが、「継続処理」は「本処理」の後で実行するのではなく、「本処理」の前で実行した方が「綺麗」に書けることが多いようです。
86
86
 
87
87
  そして、最初だけは「継続処理」が不要になるので、それを運良くごまかせない場合は、フラグを使って分岐するのが良さそうです。
88
88
 

2

追記

2016/04/07 01:52

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -29,3 +29,67 @@
29
29
  fprintf(ofp, "\n};\n\n");
30
30
 
31
31
  ```
32
+
33
+
34
+
35
+ ---
36
+
37
+ 【追記】
38
+
39
+ catsforepawさんの回答を見て気が付きました。`,`が最後についてしまいますね。
40
+
41
+ もし、生成されたファイルをコンパイルするようでしたら、コンパイラ(例えばVisual strudio)によっては適切にコンパイルしてくれないことがあります。
42
+
43
+
44
+
45
+ フラグが必要になることが難点ですが、このような','等を省略したい時、結構使えます。
46
+
47
+ ```C
48
+
49
+ // Make BinOut.
50
+
51
+ fprintf(ofp, "unsigned char BinOut[] = {\n");
52
+
53
+ bool first=true;
54
+
55
+ for (i = 0; i < fsize; i++) {
56
+
57
+ if (first) {
58
+
59
+ first=false;
60
+
61
+ } else {
62
+
63
+ // 16の倍数で改行をファイルに書き込みたい。
64
+
65
+ if ((i % 16) == 0) {
66
+
67
+ fprintf(ofp, "\n");
68
+
69
+ }
70
+
71
+ fprintf(ofp, ", ");
72
+
73
+ }
74
+
75
+ fprintf(ofp, "0x%X", BinaryText[i]);
76
+
77
+ }
78
+
79
+ fprintf(ofp, "\n};\n\n");
80
+
81
+ ```
82
+
83
+
84
+
85
+ tkturbotんとcatsforepawさんの回答を見ても感じるかと思いますが、「継続処理」は「本処理」の後で実行するのではなく、「本処理」の前で実行した方が「綺麗」に書けることが多いようです。
86
+
87
+ そして、最初だけは「継続処理」が不要になるので、それを運良くごまかせない場合は、フラグを使って分岐するのが良さそうです。
88
+
89
+
90
+
91
+ ---
92
+
93
+ 理想は、フラグを使わないでループ先頭の処理を分けることができると良いのです。
94
+
95
+ どなたか良い方法をご存知でしたら是非教えて下さい。

1

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

2016/04/07 01:51

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -6,12 +6,26 @@
6
6
 
7
7
  ```C
8
8
 
9
- if ((i % 16) == 15)
9
+ // Make BinOut.
10
10
 
11
- {
11
+ fprintf(ofp, "unsigned char BinOut[] = {\n");
12
12
 
13
+ for (i = 0; i < fsize; i++) {
14
+
15
+ fprintf(ofp, "0x%X, ", BinaryText[i]);
16
+
17
+ // 16の倍数で改行をファイルに書き込みたい。
18
+
19
+ if ((i % 16) == 15)
20
+
21
+ {
22
+
13
- fprintf(ofp, "\n");
23
+ fprintf(ofp, "\n");
24
+
25
+ }
14
26
 
15
27
  }
16
28
 
29
+ fprintf(ofp, "\n};\n\n");
30
+
17
31
  ```