質問編集履歴
3
質問者の返信を元に「自分で一部書き換えたプログラム」を再度書き換えました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -224,25 +224,29 @@
|
|
224
224
|
|
225
225
|
{
|
226
226
|
|
227
|
-
int i,
|
227
|
+
int i,j, k;
|
228
228
|
|
229
229
|
char sex[16];
|
230
230
|
|
231
231
|
|
232
232
|
|
233
|
+
|
234
|
+
|
233
235
|
do
|
234
236
|
|
235
237
|
{
|
236
238
|
|
237
239
|
printf("名前を入力してください:");
|
238
240
|
|
239
|
-
scanf_s("%
|
241
|
+
scanf_s("%s", data->name,256);
|
240
|
-
|
242
|
+
|
241
|
-
printf("%sでよろしいですか??(合ってます
|
243
|
+
printf("%sでよろしいですか??(「合ってます」:「1」を入力、「間違いました」:「1以外」を入力)\n", data->name);
|
242
244
|
|
243
245
|
scanf_s("%d", &i);
|
244
246
|
|
245
|
-
} while (i =
|
247
|
+
} while (i != 1);
|
248
|
+
|
249
|
+
|
246
250
|
|
247
251
|
do
|
248
252
|
|
@@ -252,17 +256,19 @@
|
|
252
256
|
|
253
257
|
scanf_s("%d", &data->age);
|
254
258
|
|
255
|
-
printf("%dでよろしいですか??(合ってます
|
259
|
+
printf("%dでよろしいですか??(「合ってます」:「1」を入力、「間違いました」:「1以外」を入力)\n", data->age);
|
256
260
|
|
257
261
|
scanf_s("%d", &j);
|
258
262
|
|
259
|
-
} while (j =
|
263
|
+
} while (j != 1);
|
264
|
+
|
265
|
+
|
260
266
|
|
261
267
|
do
|
262
268
|
|
263
269
|
{
|
264
270
|
|
265
|
-
printf("性別を入力してください(男性
|
271
|
+
printf("性別を入力してください(「男性」:「1」を入力、「女性」:「2」を入力):");
|
266
272
|
|
267
273
|
scanf_s("%d", &data->sex);
|
268
274
|
|
@@ -274,19 +280,27 @@
|
|
274
280
|
|
275
281
|
}
|
276
282
|
|
283
|
+
else if(data->sex == 2)
|
284
|
+
|
285
|
+
{
|
286
|
+
|
287
|
+
strcpy_s(sex, 16, "女性");
|
288
|
+
|
289
|
+
}
|
290
|
+
|
277
291
|
else
|
278
292
|
|
279
293
|
{
|
280
294
|
|
281
|
-
|
295
|
+
continue;
|
282
296
|
|
283
297
|
}
|
284
298
|
|
285
|
-
printf("%sでよろしいですか??(合ってます
|
299
|
+
printf("%sでよろしいですか??(「合ってます」:「1」を入力、「間違いました」:「1以外」を入力)\n", sex);
|
286
300
|
|
287
301
|
scanf_s("%d", &k);
|
288
302
|
|
289
|
-
} while (k =
|
303
|
+
} while (k != 1);
|
290
304
|
|
291
305
|
|
292
306
|
|
@@ -332,10 +346,10 @@
|
|
332
346
|
|
333
347
|
}
|
334
348
|
|
349
|
+
|
350
|
+
|
335
351
|
```
|
336
352
|
|
337
|
-
|
338
|
-
|
339
353
|
**「自分で一部書き換えたプログラム」**に穴や間違いがありましたら、教えて頂けると助かります。
|
340
354
|
|
341
355
|
|
2
名前を入力する部分のscanf_s関数の引数を変更しました。%s→%255s
test
CHANGED
File without changes
|
test
CHANGED
@@ -236,7 +236,7 @@
|
|
236
236
|
|
237
237
|
printf("名前を入力してください:");
|
238
238
|
|
239
|
-
scanf_s("%s", &data->name,256);
|
239
|
+
scanf_s("%255s", &data->name,256);
|
240
240
|
|
241
241
|
printf("%sでよろしいですか??(合ってます→1、間違いました→2)\n",data->name);
|
242
242
|
|
1
コードブロックを採用しました。質問内容を一部追記しました。質問回答を受け、構造体内の変数宣言部でunsignedを使いました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,7 +6,19 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
+
#前提
|
10
|
+
|
11
|
+
情報を入力する「InputPeople関数」内において、正しく入力されたか確認を取るために、著者の解答を一部書き換えました。
|
12
|
+
|
13
|
+
#実現したいこと
|
14
|
+
|
15
|
+
より安全で正確な(穴のない)プログラムが書けたらと思っています。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
9
|
-
#
|
21
|
+
#問題
|
10
22
|
|
11
23
|
「3人分の、名前、年齢、性別、を入力して表示するプログラムを作りなさい。
|
12
24
|
|
@@ -18,6 +30,8 @@
|
|
18
30
|
|
19
31
|
#著者の解答
|
20
32
|
|
33
|
+
```ここに言語を入力
|
34
|
+
|
21
35
|
#include<stdio.h>
|
22
36
|
|
23
37
|
#include<string.h>
|
@@ -140,10 +154,14 @@
|
|
140
154
|
|
141
155
|
|
142
156
|
|
157
|
+
```
|
158
|
+
|
143
159
|
|
144
160
|
|
145
161
|
#自分で一部書き換えたプログラム
|
146
162
|
|
163
|
+
```ここに言語を入力
|
164
|
+
|
147
165
|
#include<stdio.h>
|
148
166
|
|
149
167
|
#include<string.h>
|
@@ -152,11 +170,11 @@
|
|
152
170
|
|
153
171
|
{
|
154
172
|
|
155
|
-
char name[256];
|
173
|
+
unsigned char name[256];
|
156
|
-
|
174
|
+
|
157
|
-
int age;
|
175
|
+
unsigned int age;
|
158
|
-
|
176
|
+
|
159
|
-
int sex;
|
177
|
+
unsigned int sex;
|
160
178
|
|
161
179
|
}People;
|
162
180
|
|
@@ -186,6 +204,8 @@
|
|
186
204
|
|
187
205
|
}
|
188
206
|
|
207
|
+
|
208
|
+
|
189
209
|
for (i = 0; i < 3; i++)
|
190
210
|
|
191
211
|
{
|
@@ -204,25 +224,71 @@
|
|
204
224
|
|
205
225
|
{
|
206
226
|
|
207
|
-
|
227
|
+
int i, j, k;
|
208
|
-
|
209
|
-
|
228
|
+
|
210
|
-
|
211
|
-
|
229
|
+
char sex[16];
|
212
|
-
|
213
|
-
|
230
|
+
|
231
|
+
|
214
232
|
|
215
233
|
do
|
216
234
|
|
217
235
|
{
|
218
236
|
|
219
|
-
printf("
|
237
|
+
printf("名前を入力してください:");
|
238
|
+
|
239
|
+
scanf_s("%s", &data->name,256);
|
240
|
+
|
241
|
+
printf("%sでよろしいですか??(合ってます→1、間違いました→2)\n",data->name);
|
242
|
+
|
243
|
+
scanf_s("%d", &i);
|
244
|
+
|
245
|
+
} while (i == 2);
|
246
|
+
|
247
|
+
do
|
248
|
+
|
249
|
+
{
|
250
|
+
|
251
|
+
printf("年齢を入力してください:");
|
252
|
+
|
253
|
+
scanf_s("%d", &data->age);
|
254
|
+
|
255
|
+
printf("%dでよろしいですか??(合ってます→1、間違いました→2)\n", data->age);
|
256
|
+
|
257
|
+
scanf_s("%d", &j);
|
258
|
+
|
259
|
+
} while (j == 2);
|
260
|
+
|
261
|
+
do
|
262
|
+
|
263
|
+
{
|
264
|
+
|
265
|
+
printf("性別を入力してください(男性→1、女性→2):");
|
220
266
|
|
221
267
|
scanf_s("%d", &data->sex);
|
222
268
|
|
223
|
-
|
269
|
+
if (data->sex == 1)
|
270
|
+
|
224
|
-
|
271
|
+
{
|
272
|
+
|
273
|
+
strcpy_s(sex, 16, "男性");
|
274
|
+
|
275
|
+
}
|
276
|
+
|
277
|
+
else
|
278
|
+
|
279
|
+
{
|
280
|
+
|
281
|
+
strcpy_s(sex, 16, "女性");
|
282
|
+
|
283
|
+
}
|
284
|
+
|
285
|
+
printf("%sでよろしいですか??(合ってます→1、間違いました→2)\n", sex);
|
286
|
+
|
225
|
-
|
287
|
+
scanf_s("%d", &k);
|
288
|
+
|
289
|
+
} while (k == 2);
|
290
|
+
|
291
|
+
|
226
292
|
|
227
293
|
printf("\n");
|
228
294
|
|
@@ -244,10 +310,6 @@
|
|
244
310
|
|
245
311
|
printf("年齢:%d\n", data.age);
|
246
312
|
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
313
|
if (data.sex == 1)
|
252
314
|
|
253
315
|
{
|
@@ -270,11 +332,7 @@
|
|
270
332
|
|
271
333
|
}
|
272
334
|
|
273
|
-
|
335
|
+
```
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
336
|
|
279
337
|
|
280
338
|
|