回答編集履歴

1

追記

2021/06/30 04:04

投稿

episteme
episteme

スコア16612

test CHANGED
@@ -77,3 +77,127 @@
77
77
  }
78
78
 
79
79
  ```
80
+
81
+
82
+
83
+ [おまけ] 分割したやつ:
84
+
85
+
86
+
87
+ ```C
88
+
89
+ // stack.h
90
+
91
+ #ifndef STACK_H__
92
+
93
+ #define STACK_H__
94
+
95
+
96
+
97
+ #include <stdbool.h>
98
+
99
+
100
+
101
+ bool put(char* putdata);
102
+
103
+ bool get(char** buffer);
104
+
105
+
106
+
107
+ #endif
108
+
109
+ ```
110
+
111
+
112
+
113
+ ```C
114
+
115
+ // stack.c
116
+
117
+ #include "stack.h"
118
+
119
+
120
+
121
+ #define MAX_STACK 256 /* スッタクサイズの上限 */
122
+
123
+ char* stack[MAX_STACK]; /* スタックの実体である配列 */
124
+
125
+ size_t size = 0; /* スタック内の要素数 */
126
+
127
+
128
+
129
+ bool put(char* putdata) {
130
+
131
+ if ( size < MAX_STACK ) {
132
+
133
+ // スタックにpush
134
+
135
+ stack[size++] = putdata;
136
+
137
+ return true;
138
+
139
+ }
140
+
141
+ return false;
142
+
143
+ }
144
+
145
+
146
+
147
+ bool get(char** buffer) {
148
+
149
+ if ( size > 0 ) {
150
+
151
+ // スタックからpop
152
+
153
+ *buffer = stack[--size];
154
+
155
+ return true;
156
+
157
+ }
158
+
159
+ return false;
160
+
161
+ }
162
+
163
+ ```
164
+
165
+
166
+
167
+ ```C
168
+
169
+ // main.c
170
+
171
+ #include <string.h>
172
+
173
+ #include <stdio.h>
174
+
175
+ #include <stdlib.h>
176
+
177
+ #include "stack.h"
178
+
179
+
180
+
181
+ int main() {
182
+
183
+ put(strdup("abc"));
184
+
185
+ put(strdup("def"));
186
+
187
+ put(strdup("ghi"));
188
+
189
+ char* str;
190
+
191
+ while ( get(&str) ) {
192
+
193
+ printf("[%s]\n", str);
194
+
195
+ free(str);
196
+
197
+ }
198
+
199
+ return 0;
200
+
201
+ }
202
+
203
+ ```