У меня есть список слов? Вероятно, вы хотите объявить массив указателей переменная типа 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/.