回答編集履歴

2

誤字修正

2020/07/05 17:48

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- 私のコードはコピペはされていました、利用されていません。
11
+ 私のコードはコピペはされていました、利用されていません。
12
12
 
13
13
  関数 drawMemo は呼び出されもしていません。
14
14
 
@@ -226,7 +226,7 @@
226
226
 
227
227
  if (DxLib_Init() == -1) return -1; // DXライブラリの初期化
228
228
 
229
- SetFontSize(33); // サイズの変更
229
+ SetFontSize(33); // フォントサイズの変更
230
230
 
231
231
  SetDrawScreen(DX_SCREEN_BACK); // 描画先を裏にする
232
232
 
@@ -426,7 +426,7 @@
426
426
 
427
427
  ```
428
428
 
429
- **追記*
429
+ **追記**
430
430
 
431
431
  基礎の基礎が分かっていないんですね。
432
432
 

1

文字列の比較の説明を追加

2020/07/05 17:48

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -425,3 +425,107 @@
425
425
  }
426
426
 
427
427
  ```
428
+
429
+ **追記*
430
+
431
+ 基礎の基礎が分かっていないんですね。
432
+
433
+
434
+
435
+ 長さ3 の文字列 "abc" は { 'a', 'b', 'c', '\0' } の 4バイト。
436
+
437
+ 長さ1 の文字列 "a" は { 'a', '\0' } の 2バイト。
438
+
439
+ 長さ0 の文字列 "" は { '\0' } の 1バイト。
440
+
441
+ "\0" は { '\0', '\0' } の 2バイト。でも strlen("\0") は 0文字。
442
+
443
+
444
+
445
+ 次に、文字列の比較は == では出来ません。
446
+
447
+ if (buffer == "abc") はダメで、
448
+
449
+ if (strcmp(buffer, "abc") == 0) と書きます。
450
+
451
+
452
+
453
+ buffer が空(0文字)というのは、buffer[0] が '\0' ということ。
454
+
455
+ if (buffer[0] == '\0') で調べることができます。
456
+
457
+ if (strlen(buffer) == 0) や if (strcmp(buffer, "") == 0) でも
458
+
459
+ 分かりますが、関数を呼び出すのは無駄です。
460
+
461
+
462
+
463
+ こんなことも理解していなくて、アプリを作ろうとよく思いますね。
464
+
465
+
466
+
467
+ さて、buffer が空の時、if (strstr(buffer2, buffer)) が真になりますから
468
+
469
+ その先には行きません。その前に調べないといけないでしょう。
470
+
471
+ ```diff
472
+
473
+ }
474
+
475
+ }
476
+
477
+ }
478
+
479
+ - if (strstr(buffer2, buffer)) {
480
+
481
+ + if (buffer[0] == '\0') {
482
+
483
+ + hyouzi = 0;
484
+
485
+ + }
486
+
487
+ + else if (strstr(buffer2, buffer)) {
488
+
489
+ hyouzi = 1;
490
+
491
+ break;
492
+
493
+ }
494
+
495
+ ```
496
+
497
+
498
+
499
+ ところで、どのような動作を期待しているのでしょうか?
500
+
501
+ 次のような操作で、memo.txt に追加できることは確認できたのですが、
502
+
503
+ 本当にこのような動作を期待しているのでしょうか?
504
+
505
+
506
+
507
+ 空の memo.txt を用意して、プログラムを起動します。
508
+
509
+
510
+
511
+ 「覚えて」エンター
512
+
513
+ 「→ジュニーは戦場へ行くという映画は面白い。」エンター
514
+
515
+ 「覚えて」エンター
516
+
517
+ 「→明日は晴れ。」エンター
518
+
519
+ 「覚えて」エンター
520
+
521
+ 「→どすこいはお相撲。」エンター
522
+
523
+ 「晴れ」エンター
524
+
525
+
526
+
527
+ 「buffer2 = →明日は晴れ。」と表示される。
528
+
529
+ memo.txt には、入力文字列が追加されている。
530
+
531
+ 「→」がないと追加されません。