回答編集履歴

1

追記

2021/07/15 08:13

投稿

otn
otn

スコア84566

test CHANGED
@@ -3,3 +3,45 @@
3
3
 
4
4
 
5
5
  ヒストリー番号を32で割った余りを添え字にすればいいです。
6
+
7
+
8
+
9
+ #追記
10
+
11
+ > が満たされるイメージがしにくいです。32個を溢れた場合、どのような動作になりますでしょうか?
12
+
13
+
14
+
15
+ 添え字に書くときに、`history[i]`と書かずに`history[i%32]`と書くだけですが。
16
+
17
+
18
+
19
+ イメージしにくいというのがよく分からないです。
20
+
21
+ あるいは、「最後まで使ったら先頭に戻って再利用する」という発想が出来てない?
22
+
23
+ いままで日常生活でそういうことしたことないのでしょうか?
24
+
25
+ ```C
26
+
27
+ // histN ・・・ 現在のヒストリー番号を保持しているint型変数とする
28
+
29
+
30
+
31
+ // ヒストリー保存
32
+
33
+ history[histN % 32] = 今の行の入っているバッファのアドレス;
34
+
35
+
36
+
37
+ // 直近32個の表示(histNは次の番号になっているとする)
38
+
39
+ int i;
40
+
41
+ for(i=histN-32; i<histN; i++){
42
+
43
+ printf("%d %s\n",i,history[i % 32]);
44
+
45
+ }
46
+
47
+ ```