以下情况: 我有一个单词列表。例如:“你好”、“嘿”、“救命”、“鲨鱼”。
我想将它们保存在数组 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 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);
}
最后如何从 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/