ページ 11

C言語での日本語比較

Posted: 2015年9月08日(火) 16:50
by morimoto812
C言語を用いて、簡単な人口無能を作りたいと考えています。
辞書をdatファイルで作成します。
(例)
おはよう
こんばんは
さよなら

この辞書を1つ1つfor文で配列に入れ、scanfで取り込んだ日本語と一致する箇所でfor文を止め、
返答用の辞書を開き、配列の番号をもとに返事を決定するようなプログラムを作りたいです。

scanfで日本語をchar型ポインタに格納するとこまではいいのですが、
辞書の日本語とscanfで取り込んだ日本語を比較するのはどう行えばいいのでしょうか。

Re: C言語での日本語比較

Posted: 2015年9月08日(火) 17:42
by みけCAT
morimoto812 さんが書きました:辞書の日本語とscanfで取り込んだ日本語を比較するのはどう行えばいいのでしょうか。
実装を簡単にするなら、素直にstrstrやstrcmpなどを使えばいいと思います。
どこまで考えて比較したいですか?(例:ひらがなとカタカナを区別しない、漢字とその読みを区別しない、ひらがなやカタカナとローマ字を区別しない、など)

コード:

#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;
}

Re: C言語での日本語比較

Posted: 2015年9月17日(木) 21:13
by morimoto812
ありがとうございますstrstr関数を使って無事につくり上げることが出来ました。

Re: C言語での日本語比較

Posted: 2015年9月17日(木) 21:45
by みけCAT
morimoto812 さんが書きました:ありがとうございますstrstr関数を使って無事につくり上げることが出来ました。
解決したのでしたら、「解決チェック」をお願いします。
解決チェックをするには、投稿画面の「送信」ボタンの右にある「解決!」にチェックを入れた状態で返信を投稿してください。