在单词数组中查找具有特定开头字母的单词

时间:2018-06-05 15:07:19

标签: c arrays string pointers

以下情况: 我有一个单词列表。例如:“你好”,“嘿”,“帮助”,“鲨鱼”。

我想保存数组apcWord中的那些(word-array ..更具体地说,指针数组)。 我有一个指针pcBeg到开头字符串“他”

我必须用这个函数原型解决这个问题: void search(char * apcString [],char * pcBeg)

如何过滤单词数组,只打印以“He”开头的单词。

我完全糊涂了..我用strstr()尝试了一些东西,但没有结果。问题是单词列表,并使用此“He”开头过滤所有单词。如果我只有一个字,只是想知道它是以“他”开头还是没有问题。

我希望我尽可能清楚地解决问题。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我有一个单词列表? probabaly你想要声明 char类型的指针变量数组。例如

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

并且我有一个指针pcBeg到开头的字符串"他" ?正如你所说的声明一个字符指针。例如

char *pcBeg = "Hi";

我必须用这个函数原型解决这个问题:?你应该学习如何将指针数组传递给函数。如果要将char指针数组传递给函数,则需要捕获char类型的双指针。这是示例代码

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

如何过滤单词数组,只打印出以" He"开头的单词。 ?使用strncmp()代替strstr()。打开man 3 strncmpstrncmp()的第三个参数对于您引用以&#34开头的单词的部分非常有用;他"。以下是示例代码

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()
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/调试小代码。