回答編集履歴
3
コードの修正
answer
CHANGED
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
MeCab::Tagger* tagger = MeCab::createTagger("");
|
|
56
56
|
result = tagger->parse(kinbuf);
|
|
57
57
|
strcpy_s(resbuf, sizeof resbuf, result);
|
|
58
|
+
delete tagger;
|
|
58
59
|
wcount = 0;
|
|
59
60
|
words[wcount] = strtok(resbuf, "\t\n"); // 単語
|
|
60
61
|
char *p = strtok(NULL, "\t\n"); // 品詞
|
|
@@ -131,4 +132,6 @@
|
|
|
131
132
|
return 0;
|
|
132
133
|
}
|
|
133
134
|
|
|
134
|
-
```
|
|
135
|
+
```
|
|
136
|
+
**追記**
|
|
137
|
+
メモリーリークしないように delete tagger; を追加しました。
|
2
バグ修正2
answer
CHANGED
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
char *p = strtok(NULL, "\t\n"); // 品詞
|
|
61
61
|
while (wcount < 100 && p) {
|
|
62
62
|
if ((strlen(words[wcount]) != 2 ||
|
|
63
|
-
(unsigned char)words[wcount][0] > 0x88)
|
|
63
|
+
(unsigned char)words[wcount][0] >= 0x88)
|
|
64
64
|
&& (!strncmp(p, "名詞", 4) || !strncmp(p, "動詞", 4) ||
|
|
65
65
|
!strncmp(p, "形容詞", 6))
|
|
66
66
|
) wcount++;
|
1
バグ修正
answer
CHANGED
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
char resbuf[4096] = ""; // result のコピーバッファ
|
|
43
43
|
char *words[100]; // 単語(word) 名詞、動詞、形容詞のみ
|
|
44
44
|
int wcount = 0; // 単語の個数(count)
|
|
45
|
+
char wbuf[256] = ""; // words の表示用バッファ
|
|
45
46
|
|
|
46
47
|
while (ProcessMessage() == 0) {
|
|
47
48
|
ClearDrawScreen(); // 画面の初期化
|
|
@@ -58,13 +59,17 @@
|
|
|
58
59
|
words[wcount] = strtok(resbuf, "\t\n"); // 単語
|
|
59
60
|
char *p = strtok(NULL, "\t\n"); // 品詞
|
|
60
61
|
while (wcount < 100 && p) {
|
|
62
|
+
if ((strlen(words[wcount]) != 2 ||
|
|
61
|
-
|
|
63
|
+
(unsigned char)words[wcount][0] > 0x88)
|
|
62
64
|
&& (!strncmp(p, "名詞", 4) || !strncmp(p, "動詞", 4) ||
|
|
63
65
|
!strncmp(p, "形容詞", 6))
|
|
64
66
|
) wcount++;
|
|
65
67
|
words[wcount] = strtok(NULL, "\t\n"); // 単語
|
|
66
68
|
p = strtok(NULL, "\t\n"); // 品詞
|
|
67
69
|
}
|
|
70
|
+
p = wbuf;
|
|
71
|
+
*p = '\0';
|
|
72
|
+
for (int i = 0; i < wcount; i++) p += sprintf(p, "%s ", words[i]);
|
|
68
73
|
|
|
69
74
|
if (kinbuf[0] == '\0') {
|
|
70
75
|
str = setStr("文字列を入力してください。", pos);
|
|
@@ -110,14 +115,11 @@
|
|
|
110
115
|
SetActiveKeyInput(kih); // 再度キー入力をアクティブにする
|
|
111
116
|
SetKeyInputString("", kih); // キー入力文字列を初期化する
|
|
112
117
|
}
|
|
113
|
-
char wstr[256], *p = wstr;
|
|
114
|
-
*p = '\0';
|
|
115
|
-
for (int i = 0; i < wcount; i++) p += sprintf(p, "%s ", words[i]);
|
|
116
118
|
|
|
117
119
|
drawString(0, 0, GetColor(5, 255, 255), pos, str); // 1文字ずつ表示
|
|
118
120
|
DrawFormatString(0, 50, GetColor(255, 255, 255), memory ? "記憶:" : "入力:");
|
|
119
121
|
DrawFormatString(100, 200, GetColor(5, 255, 0), "memobuf = [%s]", memobuf);
|
|
120
|
-
DrawFormatString(100, 300, GetColor(175, 80, 100), "words = [%s]",
|
|
122
|
+
DrawFormatString(100, 300, GetColor(175, 80, 100), "words = [%s]", wbuf);
|
|
121
123
|
DrawFormatString(100, 400, GetColor(255, 255, 0), "kinbuf = [%s]",kinbuf);
|
|
122
124
|
DrawFormatString(100, 500, GetColor(255, 255, 0), "result = [%s]", result);
|
|
123
125
|
|
|
@@ -128,4 +130,5 @@
|
|
|
128
130
|
DxLib_End(); // DXライブラリの使用終了
|
|
129
131
|
return 0;
|
|
130
132
|
}
|
|
133
|
+
|
|
131
134
|
```
|