gpt4 book ai didi

c-查找某个字符在字符串中出现的次数

转载 作者:行者123 更新时间:2023-11-30 19:06:18 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <string.h>

#define SIZE 40

int main(void)
{
char buffer1[SIZE] = "computer program";
char *ptr;
int ch = 'p', j = 0, i;

for (i = 0; i<strlen(buffer1); i++)
{
ptr = strchr(buffer1[i], ch);
if (ptr != 0) j++;
printf(" %d ", j);
}
}

我想计算一个字符在字符串中出现的次数。在我的程序中,我选择了字符“p”。

我了解 Pascal,我现在正在学习 C。 pascal 中有一个名为 Pos(x,y) 的函数,它在 y 中搜索 x。这是不是有些熟悉的东西?我想我这里用的不是。

最佳答案

strchr 的函数签名是

 char *strchr(const char *s, int c);

您需要传递一个char*,但您已经传递了一个char。这是错误的。

您在循环中使用了 strlen - 使其效率低下。只需计算一次字符串的长度,然后对其进行迭代即可。

char *t = buffer;
while(t!= NULL)
{
t = strchr(t, ch);
if( t ) {
t++;
occurences++;
}
}

并且无需使用标准库函数,您可以简单地循环遍历 char 数组。

size_t len = strlen(buffer);
for(size_t i = 0; i < len; i++){
if( ch == buffer[i]) occurences++;
}

或者不使用strlen

   char *p = buffer;
while(*p){
if( *p == ch ){
occurences++;
}
p++;
}

或者

for(char *p = buffer; *p; occurences += *p++ == ch);

关于c-查找某个字符在字符串中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48343700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com