C言語を用いて、簡単な人口無能を作りたいと考えています。
辞書をdatファイルで作成します。
(例)
おはよう
こんばんは
さよなら
この辞書を1つ1つfor文で配列に入れ、scanfで取り込んだ日本語と一致する箇所でfor文を止め、
返答用の辞書を開き、配列の番号をもとに返事を決定するようなプログラムを作りたいです。
scanfで日本語をchar型ポインタに格納するとこまではいいのですが、
辞書の日本語とscanfで取り込んだ日本語を比較するのはどう行えばいいのでしょうか。
C言語での日本語比較
Re: C言語での日本語比較
実装を簡単にするなら、素直にstrstrやstrcmpなどを使えばいいと思います。morimoto812 さんが書きました:辞書の日本語とscanfで取り込んだ日本語を比較するのはどう行えばいいのでしょうか。
どこまで考えて比較したいですか?(例:ひらがなとカタカナを区別しない、漢字とその読みを区別しない、ひらがなやカタカナとローマ字を区別しない、など)
#include <stdio.h>
#include <string.h>
int main(void) {
const char *words[3] = {"おはよう", "こんばんは", "さよなら"};
char dictionary[3][100];
char input[100] = {};
char *input_ptr = input;
int i;
for (i = 0; i < 3; i++) strcpy(dictionary[i], words[i]);
scanf("%99s", input_ptr);
for (i = 0; i < 3; i++) {
if (strstr(input_ptr, dictionary[i]) != NULL) break;
}
printf("番号 = %d\n", i);
return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: C言語での日本語比較
解決したのでしたら、「解決チェック」をお願いします。morimoto812 さんが書きました:ありがとうございますstrstr関数を使って無事につくり上げることが出来ました。
解決チェックをするには、投稿画面の「送信」ボタンの右にある「解決!」にチェックを入れた状態で返信を投稿してください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)