Найти слова с определенными начальными буквами в массиве слов - PullRequest
0 голосов
/ 05 июня 2018

следующая ситуация: у меня есть список слов.Например: «Привет», «Привет», «Справка», «Акула».

Я хочу сохранить их в массиве apcWord (слово-массив .. более конкретно, массив указателей).И у меня есть указатель pcBeg на начальную строку "He"

Я должен решить это с помощью прототипа этой функции: поиск пустот (char * apcString [], char * pcBeg)

Как можноЯ фильтрую массив слов и просто печатаю слова, которые начинаются с «Он».

Я совершенно сбит с толку ... Я пробовал кое-что с strstr (), но безрезультатно.Проблема заключается в списке слов и отфильтровывает все слова с этим началом "Он".если я просто скажу одно слово и просто хочу знать, начинается ли оно с «Он» или нет, это не проблема.

Надеюсь, я сделал свою проблему настолько ясной, насколько это возможно.Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 05 июня 2018

У меня есть список слов? Вероятно, вы хотите объявить массив указателей переменная типа char.например,

char *apcWord[4] = {"Hello","Hey","Help","Shark"};

И У меня есть указатель pcBeg на начальную строку "He"? , как вы сказали, объявить указатель на символ .например,

char *pcBeg = "Hi";

Я должен решить эту проблему с помощью прототипа этой функции:? Вы должны научиться , как передавать массив указателей в функцию .Если вы передаете массив указателей на символы в функцию, вам нужно поймать с двойным указателем типа char.Вот пример кода

void search (char **apcString, char *pcBeg,int ele) {
   /* logic  */ 
}

Как мне отфильтровать массив слов и просто напечатать слова, которые начинаются с «Он».? использовать strncmp() вместо strstr().open man 3 strncmp и третий аргумент strncmp() полезны для вашей части вопроса, цитируя слова, начинающиеся с "He". Вот пример кода

void search (char **apcString, char *pcBeg,int ele) {
        int count = 0;
        for(int row = 0 ;row < ele ;row++) {
                if(strncmp(apcString[row],pcBeg,strlen(pcBeg)) == 0) {
                                count++;
                }
        }
        printf(" count of %s is : %d \n",pcBeg,count);
}

Наконец, какВызовите search() из main() function

int main(void) {
        char *apcWord[5] = {"HelloHi","HiHey","Help","Hi","Shark"};
        int ele = sizeof(apcWord)/sizeof(apcWord[0]);
        char *pcBeg = "Hi";
        search(apcWord,pcBeg,ele);/* 3rd arg :- pass the no of element in the array of pointer */
        return 0;
}

Надеюсь, я сделал свою проблему максимально понятной.? Нет, ты не сделал.Мы не знаем, какой код вы пробовали, поэтому желательно, чтобы код, который вы пытались использовать, отвечал на ваш вопрос, чтобы вы могли получить дополнительную помощь.

И, наконец, предлагаем вам прочитать хорошую книгу C о массивах, указателяхи т. д. и научитесь отлаживать небольшой код, используя gdb https://ericlippert.com/2014/03/05/how-to-debug-small-programs/.

...