C言語での日本語比較

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
morimoto812
記事: 2
登録日時: 10年前

C言語での日本語比較

#1

投稿記事 by morimoto812 » 10年前

C言語を用いて、簡単な人口無能を作りたいと考えています。
辞書をdatファイルで作成します。
(例)
おはよう
こんばんは
さよなら

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

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

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 10年前

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;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

morimoto812
記事: 2
登録日時: 10年前

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

#3

投稿記事 by morimoto812 » 10年前

ありがとうございますstrstr関数を使って無事につくり上げることが出来ました。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#4

投稿記事 by みけCAT » 10年前

morimoto812 さんが書きました:ありがとうございますstrstr関数を使って無事につくり上げることが出来ました。
解決したのでしたら、「解決チェック」をお願いします。
解決チェックをするには、投稿画面の「送信」ボタンの右にある「解決!」にチェックを入れた状態で返信を投稿してください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る