У меня есть 2 функции: smalltalk и do_smalltalk. smalltalk
проверит, соответствует ли пользовательский ввод (намерение) слову, данному в массиве. Если есть совпадение, программа перейдет к do_smalltalk
. Мой вопрос: как мне изменить это на таблицу данных ha sh или структуру данных ha sh, чтобы я мог оптимизировать поиск по определенному слову? Слово малого разговора является ключом, а ответом является значение.
smalltalk
int smalltalk(const char *intent)
{
// An array to store 9 smalltalk words
char *smalltalk[]= {"hi","hello","it","it's","that","that's","this","bye","goodbye"};
// Loop through the smalltalk array. Each index is a word.
for (int word = 0; word < 9; word++)
{
// If user input matches a small talk word, return 1.
if (strcmp(intent, smalltalk[word]) == 0)
{
return 1;
}
}
return 0;
}
}
do_smalltalk
int do_smalltalk(int argc, char *argv[], char *response, int n)
{
if (strcmp("hi",argv[0])==0 || strcmp("hello", argv[0]) == 0)
{
snprintf(response,n,"Hello");
}
else if (strcmp("it's",argv[0])==0 || strcmp("it",argv[0])==0)
{
snprintf(response,n,"Indeed it is.");
}
else if (strcmp("that's",argv[0])==0 || strcmp("that",argv[0])==0 || strcmp("this",argv[0])==0)
{
snprintf(response,n,"Yes, you're right.");
}
else if (strcmp("bye",argv[0])==0 || strcmp("goodbye",argv[0])==0)
{
snprintf(response,n,"Bye");
return 1;
}
return 0;
}