質問編集履歴
5
編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -50,9 +50,7 @@
|
|
50
50
|
|
51
51
|
|
52
52
|
|
53
|
-
int my_str2(const char* s1, const char* s2)//
|
53
|
+
int my_str2(const char* s1, const char* s2)//s1がs2を含んでいたら1を返す
|
54
|
-
|
55
|
-
|
56
54
|
|
57
55
|
{
|
58
56
|
|
4
編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,6 +18,10 @@
|
|
18
18
|
|
19
19
|
問題:da.txtに「映画」を含んだ文章を保存し、「映画」と入力すると「映画」という文字を含んだ文章を表示するようにしたいです。ですが、「映画」と入力しても最後の行の文章が表示されるだけで意図した文章が表示されません。
|
20
20
|
|
21
|
+
|
22
|
+
|
23
|
+
さらに短くしたプログラムです。
|
24
|
+
|
21
25
|
```
|
22
26
|
|
23
27
|
#pragma warning(disable: 4996)
|
@@ -92,19 +96,11 @@
|
|
92
96
|
|
93
97
|
}
|
94
98
|
|
95
|
-
|
96
|
-
|
97
|
-
int rireki = 0;
|
98
|
-
|
99
|
-
int rireki2 = 0;
|
100
|
-
|
101
|
-
int LEFTmark = 0;
|
102
|
-
|
103
99
|
const char* str[100] = {
|
104
100
|
|
105
|
-
"はい!"};//ここで文字を直接書いてるので、この文字のバイト数が各posmozi[]に入るだけ
|
101
|
+
"はい!" };//ここで文字を直接書いてるので、この文字のバイト数が各posmozi[]に入るだけ
|
106
|
-
|
102
|
+
|
107
|
-
int frame[100] = {10};//次の一文字が出るまでのカウンタとして働いている、ここの数値を変えることで文字が一文字ずつ出るまでの間隔を設定できる。
|
103
|
+
int frame[100] = { 10 };//次の一文字が出るまでのカウンタとして働いている、ここの数値を変えることで文字が一文字ずつ出るまでの間隔を設定できる。
|
108
104
|
|
109
105
|
int posmozi[100];//文字のバイト数が入る箱を表している。
|
110
106
|
|
@@ -234,8 +230,6 @@
|
|
234
230
|
|
235
231
|
if (CheckKeyInput(InputHandle) != 0) {
|
236
232
|
|
237
|
-
LEFTmark = 678;
|
238
|
-
|
239
233
|
hyouzi = 0;
|
240
234
|
|
241
235
|
gimon = 0;
|
@@ -246,128 +240,60 @@
|
|
246
240
|
|
247
241
|
GetKeyInputString(buffer, InputHandle);//ここでInputHandleに入力された文字列の数値をGetKeyInputStringにより文字コードに変換したものを上でchar型で定義したbufferに入れる。
|
248
242
|
|
249
|
-
|
243
|
+
//覚えてという言葉以外の場合はメモを読み込む込んでループに入るようにした。
|
244
|
+
|
250
|
-
|
245
|
+
if (memory == 0) {
|
246
|
+
|
247
|
+
outputfile = fopen("da.txt", "r"); // ファイルを読み込み用にオープン(開く)
|
248
|
+
|
249
|
+
if (outputfile == NULL) { // オープンに失敗した場合
|
250
|
+
|
251
|
+
printf("cannot open\n"); // エラーメッセージを出して
|
252
|
+
|
253
|
+
exit(1); // 異常終了
|
254
|
+
|
255
|
+
}
|
256
|
+
|
257
|
+
//fgetsがNULLになるまで繰り返す
|
258
|
+
|
259
|
+
//fgets(str,256,lf)!=NULL
|
260
|
+
|
261
|
+
//と同じです。このように短縮することも可能
|
262
|
+
|
263
|
+
//★bufferには文字入力の文字列を入れたので、ここにはメモからの文字列は入れられない。なので新しくbuffer2を作る。
|
264
|
+
|
265
|
+
while ((p = fgets(buffer2, 256, outputfile)) != NULL)//メモに書いた文字列をbuffer2の中に入れる。
|
266
|
+
|
267
|
+
{
|
268
|
+
|
269
|
+
// 文字の入力の入るバッファと、メモからの文字が入るバッファ2とで一致する文字が出てきた場合
|
270
|
+
|
251
|
-
if (my_str2(buffer,
|
271
|
+
if (my_str2(buffer, buffer2) == 0) {
|
252
|
-
|
253
|
-
|
272
|
+
|
254
|
-
|
255
|
-
//MakeKeyInputは開発者の方が一回呼び出せば使えるように作ったのでループ内には書かない。
|
256
|
-
|
257
|
-
z = 11;
|
258
|
-
|
259
|
-
// 入力された文字列を取得、その文字列を数値に変換
|
260
|
-
|
261
|
-
// GetKeyInputString(buffer2, InputHandle);//ここでInputHandleに入力された文字列の数値をGetKeyInputStringにより文字コードとして、文字として表示するたの数値に変換したものを上でchar型で定義したbufferに入れる。
|
262
|
-
|
263
|
-
++mozicount;
|
264
|
-
|
265
|
-
|
273
|
+
hyouzi = 1;
|
274
|
+
|
266
|
-
|
275
|
+
break;
|
276
|
+
|
277
|
+
}
|
278
|
+
|
279
|
+
// 文字の入力の入るバッファと、メモからの文字が入るバッファ2とで一致しない文字が出てきた場合
|
280
|
+
|
281
|
+
if (hyouzi == 0) {
|
282
|
+
|
283
|
+
if (strcmp(buffer, buffer2) != NULL) {
|
284
|
+
|
267
|
-
gimon =
|
285
|
+
gimon = 1;
|
286
|
+
|
287
|
+
}
|
288
|
+
|
289
|
+
}
|
290
|
+
|
291
|
+
}
|
292
|
+
|
293
|
+
fclose(outputfile); // ファイルをクローズ(閉じる)
|
268
294
|
|
269
295
|
}
|
270
296
|
|
271
|
-
//覚えてという言葉以外の場合はメモを読み込む込んでループに入るようにした。
|
272
|
-
|
273
|
-
else if (memory == 0) {
|
274
|
-
|
275
|
-
outputfile = fopen("da.txt", "r"); // ファイルを読み込み用にオープン(開く)
|
276
|
-
|
277
|
-
if (outputfile == NULL) { // オープンに失敗した場合
|
278
|
-
|
279
|
-
printf("cannot open\n"); // エラーメッセージを出して
|
280
|
-
|
281
|
-
exit(1); // 異常終了
|
282
|
-
|
283
|
-
}
|
284
|
-
|
285
|
-
//fgetsがNULLになるまで繰り返す
|
286
|
-
|
287
|
-
//fgets(str,256,lf)!=NULL
|
288
|
-
|
289
|
-
//と同じです。このように短縮することも可能
|
290
|
-
|
291
|
-
//★bufferには文字入力の文字列を入れたので、ここにはメモからの文字列は入れられない。なので新しくbuffer2を作る。
|
292
|
-
|
293
|
-
while ((p = fgets(buffer2, 256, outputfile)) != NULL)//メモに書いた文字列をbuffer2の中に入れる。
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
{
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
// 文字の入力の入るバッファと、メモからの文字が入るバッファ2とで一致する文字が出てきた場合
|
304
|
-
|
305
|
-
if (my_str2(buffer, buffer2) == 0) {
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
LEFTmark = 222;
|
310
|
-
|
311
|
-
hyouzi = 1;
|
312
|
-
|
313
|
-
break;
|
314
|
-
|
315
|
-
}
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
// 文字の入力の入るバッファと、メモからの文字が入るバッファ2とで一致しない文字が出てきた場合
|
320
|
-
|
321
|
-
if (hyouzi == 0) {
|
322
|
-
|
323
|
-
if (strcmp(buffer, buffer2) != NULL) {
|
324
|
-
|
325
|
-
gimon = 1;
|
326
|
-
|
327
|
-
}
|
328
|
-
|
329
|
-
}
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
}
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
fclose(outputfile); // ファイルをクローズ(閉じる)
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
}
|
344
|
-
|
345
|
-
//できればエンターキーを押して、次の文章を記憶できるようにしたかったが、文章には必ずと言っていいほど「は」や「とは」
|
346
|
-
|
347
|
-
//が入るし、定義のように覚えさせたいので「覚えて」の後に下のような条件で文章を記憶するようにさせた。
|
348
|
-
|
349
|
-
if (memory == 1 && my_str2(buffer, "とは") or memory == 1 && my_str2(buffer, "は") or memory == 1 && my_str2(buffer, "が")) {
|
350
|
-
|
351
|
-
// キー入力ハンドルを作る(キャンセルなし全角文字有り数値入力じゃなし)
|
352
|
-
|
353
|
-
//MakeKeyInputは開発者の方が一回呼び出せば使えるように作ったのでループ内には書かない。
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
// 入力された文字列を取得、その文字列を数値に変換
|
358
|
-
|
359
|
-
// GetKeyInputString(buffer2, InputHandle);//ここでInputHandleに入力された文字列の数値をGetKeyInputStringにより文字コードとして、文字として表示するたの数値に変換したものを上でchar型で定義したbufferに入れる。
|
360
|
-
|
361
|
-
++mozicount;
|
362
|
-
|
363
|
-
memory = 2;
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
}
|
368
|
-
|
369
|
-
//duration = 1;
|
370
|
-
|
371
297
|
// 再度インプットハンドルをアクティブにする
|
372
298
|
|
373
299
|
SetActiveKeyInput(InputHandle);
|
@@ -376,144 +302,40 @@
|
|
376
302
|
|
377
303
|
SetKeyInputString("", InputHandle);
|
378
304
|
|
379
|
-
//++mozicount;
|
380
|
-
|
381
|
-
|
382
|
-
|
383
305
|
}
|
384
306
|
|
385
|
-
|
307
|
+
DrawFormatString(100, 300, GetColor(255, 255, 0), "bufferは%s,buffer2は%s", buffer, buffer2);
|
308
|
+
|
386
|
-
|
309
|
+
DrawFormatString(100, 400, GetColor(5, 105, 0), "gimonは%d,hyouziは%d", gimon, hyouzi);
|
310
|
+
|
387
|
-
//
|
311
|
+
//文字カウントが1の時
|
388
|
-
|
312
|
+
|
389
|
-
if (m
|
313
|
+
if (mozicount > 0) {
|
390
|
-
|
391
|
-
|
314
|
+
|
392
|
-
|
393
|
-
//例えば、intとして49はそのままの値だが、charとしては49は文字コードで言う1を表す。//このような変換をしたようなもの。
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
outputfile = fopen("da.txt", "a+"); // ファイルを書き込み用にオープン(開く)
|
400
|
-
|
401
|
-
if (outputfile == NULL) { // オープンに失敗した場合
|
402
|
-
|
403
|
-
printf("cannot open\n"); // エラーメッセージを出して
|
404
|
-
|
405
|
-
|
315
|
+
drawString(z, 10, 100, GetColor(5, 255, 255));
|
406
|
-
|
407
|
-
}
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
fprintf(outputfile, "%s\n", buffer); // ファイルに書く
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
fclose(outputfile); // ファイルをクローズ(閉じる)
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
//fclose(fp);//ファイルに書き込んだときにウィンドウが消えるようになっているので、memoryが1になった瞬間に書き込んでいるうんぬん以前に
|
420
|
-
|
421
|
-
//ファイルが閉じるのでウィンドウが消えてしまう。
|
422
|
-
|
423
|
-
memory = 0;
|
424
|
-
|
425
|
-
// return 0;//ここで0になると終了してしまうので書き込んだ後も言葉が打ち込めるようにここを消す。
|
426
316
|
|
427
317
|
|
428
318
|
|
429
319
|
}
|
430
320
|
|
431
|
-
//if (CheckKeyInput(InputHandle) == 0) {
|
432
|
-
|
433
|
-
// z = 6;
|
434
|
-
|
435
|
-
|
321
|
+
if (p != NULL or hyouzi == 1) {
|
436
|
-
|
437
|
-
|
322
|
+
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
323
|
+
|
442
|
-
|
443
|
-
|
324
|
+
|
444
|
-
|
445
|
-
DrawFormatString(0, 250, GetColor(255, 255, 0), " LEFTmarkは%d", LEFTmark);
|
446
|
-
|
447
|
-
DrawFormatString(100, 100, GetColor(255, 255, 0), " gimonnlockは%d,memoryは%d", gimonnlock, memory);
|
448
|
-
|
449
|
-
DrawFormatString(100,
|
325
|
+
DrawFormatString(100, 500, GetColor(5, 105, 19), " buffer2は%s", buffer2);
|
450
|
-
|
451
|
-
DrawFormatString(100, 400, GetColor(5, 105, 0), "gimonは%d,hyouziは%d", gimon, hyouzi);
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
//新しい言葉の処理
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
//文字カウントが1の時
|
462
|
-
|
463
|
-
if (mozicount > 0) {
|
464
|
-
|
465
|
-
drawString(z, 10, 100, GetColor(5, 255, 255));
|
466
|
-
|
467
|
-
|
468
326
|
|
469
327
|
}
|
470
328
|
|
329
|
+
|
330
|
+
|
471
|
-
if (
|
331
|
+
if (hyouzi == 0 && gimon == 1) {
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
332
|
+
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
333
|
+
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
334
|
+
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
p++;
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
i++;
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
}
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
DrawFormatString(100,
|
335
|
+
DrawFormatString(100, 600, GetColor(5, 105, 0), "申し訳ありません%sとは何ですか?", buffer);
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
336
|
|
505
337
|
}
|
506
338
|
|
507
|
-
|
508
|
-
|
509
|
-
if (hyouzi == 0 && gimon == 1) {
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
DrawFormatString(100, 600, GetColor(5, 105, 0), "申し訳ありません%sとは何ですか?", buffer);
|
514
|
-
|
515
|
-
}
|
516
|
-
|
517
339
|
|
518
340
|
|
519
341
|
// 裏画面の内容を表画面に反映させる
|
3
編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
どうか何がいけないのか助言を頂けないでしょうか。
|
14
14
|
|
15
|
-
低評価を押すのはいいんですけど、その理由も教えてもらえるとありがたいです。
|
15
|
+
ちなみに、低評価を押すのはいいんですけど、その理由も教えてもらえるとありがたいです。今後の質問の仕方の改善のために。
|
16
16
|
|
17
17
|
|
18
18
|
|
2
編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,16 +6,18 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
申し訳ないのですが、
|
12
|
-
|
13
9
|
Cで書いたこのプログラムで何がいけないのか全く分からくて積んでいます。
|
14
10
|
|
15
11
|
デバッグを書けても正常にファイルを読み込んでいるし、文字での比較も問題なくできているので何が原因かさっぱりです。
|
16
12
|
|
17
13
|
どうか何がいけないのか助言を頂けないでしょうか。
|
18
14
|
|
15
|
+
低評価を押すのはいいんですけど、その理由も教えてもらえるとありがたいです。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
問題:da.txtに「映画」を含んだ文章を保存し、「映画」と入力すると「映画」という文字を含んだ文章を表示するようにしたいです。ですが、「映画」と入力しても最後の行の文章が表示されるだけで意図した文章が表示されません。
|
20
|
+
|
19
21
|
```
|
20
22
|
|
21
23
|
#pragma warning(disable: 4996)
|
1
編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
環境
|
2
|
+
|
3
|
+
visul studio 2019
|
4
|
+
|
5
|
+
DXライブラリ
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
|
1
11
|
申し訳ないのですが、
|
2
12
|
|
3
13
|
Cで書いたこのプログラムで何がいけないのか全く分からくて積んでいます。
|