【问题标题】:Find words with specific beginning letters in a array of words在单词数组中查找具有特定开头字母的单词
【发布时间】:2018-06-05 15:07:19
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 能否请您添加您目前得到的代码?我们称之为minimal reproducible example,回答您的问题会很有帮助。没有代码示例的答案通常会因为太宽泛或难以理解而被否决。
  • 显示你尝试了什么,输入是什么,输出应该是什么,以及你得到了什么。现在这太模糊/轶事了。经验法则是,如果你不得不说“我尝试了一些事情”,你应该向他们展示,并准确解释为什么他们似乎没有解决你的问题,否则人们只能猜测并可能告诉你一些事情您已经尝试过但没有成功。
  • man strncmp...
  • 所以,我认为您只需要完全理解指针、字符串、字符和整数...... Malan 的 CS 50 是一个很棒的视频系列。任何一年都可能

标签: c arrays string pointers


【解决方案1】:

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

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

并且我有一个指向起始字符串“He”的指针pcBeg?正如你所说,声明一个char指针。例如

char *pcBeg = "Hi";

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

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

如何过滤单词数组并打印以“He”开头的单词。 ? 使用strncmp() 而不是strstr()。打开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/ 调试小代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 2017-04-13
    • 2019-05-12
    • 1970-01-01
    • 2022-11-17
    • 2018-01-30
    • 1970-01-01
    相关资源
    最近更新 更多