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

标签 c arrays string pointers

以下情况: 我有一个单词列表。例如:“你好”、“嘿”、“救命”、“鲨鱼”。

我想将它们保存在数组 apcWord(字数组..更具体地说,指针数组)中。 我有一个指向开始字符串“He”的指针 pcBeg

我必须用这个函数原型(prototype)来解决这个问题: 无效搜索(char *apcString[],char *pcBeg)

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

我完全困惑了..我用 strstr() 尝试了一些东西,但没有结果。问题是单词列表并过滤所有以“He”开头的单词。如果我只有一个单词,只是想知道它是否以“He”开头,那没问题。

我希望我的问题尽可能清楚。 感谢您的帮助!

最佳答案

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

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

并且我有一个指向开头字符串“He”的指针pcBeg?正如您所说的声明一个char指针。例如

char *pcBeg = "Hi";

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

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

如何过滤单词数组并打印以“He”开头的单词。 ?使用strncmp()而不是strstr()。 open man 3 strncmpstrncmp() 的第三个参数对于引用以“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);
}

最后如何从 main() 函数调用 search()

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/ .

关于c - 在单词数组中查找具有特定开头字母的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50703362/

相关文章:

javascript - 读取函数内另一个 if 条件中变量的值

ios - 按与当前位置的距离对数组进行排序

python - 从 Python 传递字符串时 PyArg_ParseTuple 的段错误

c - 为什么通过引用传递时 C 中结构的大小会增加

c - 正确使用 volatile sig_atomic_t

编译脚本

ruby - ruby 的多维数组越界行为是否一致?

r - 提取带有名称的向量的单词

c++ - 字符串迭代器永远不会到达 std::string::end()

python - Sorted(items, lambda) 具有多个项目,其中一个相反