gpt4 book ai didi

c - 如何遍历char指针来计算特定字符存在的类型数

转载 作者:太空宇宙 更新时间:2023-11-04 04:32:03 29 4
gpt4 key购买 nike

例如,如果我有一个普通字符串并且我正在寻找字符串中 a 的数量,我将执行以下操作:

char string[] = "HelloThere";
int lengthOfString = strlen(string);
int count = 0;

for(int i=0;i<lengthOfString;i++){
if(string[i] == 'e'){
count++;
}

}

但现在我有一个字符指针,但我不确定如何正确地执行它。这就是我所做的,但它产生了一个错误。

char *string;        <------------ Contains "HelloThere"
int lengthOfString = strlen(string);
int count = 0;

for(int i=0;i<lengthOfString;i++){
if(*string[i] == 'e'){ <-------- I have a feeling this line of mine is wrong.
count++;
}

谁能告诉我如何以正确的方式做到这一点?

编辑: 另一个简单的问题:如果我有一个字符串指针数组并且我想遍历其中一个字符串指针以查找 e 会怎么样。执行此操作的正确语法是什么?

char *string[10];        <------------ Contains "HelloThere"
string[0] = strtok(someBiggerString,"=");
int lengthOfString = strlen(string[0]);
int count = 0;

for(int i=0;i<lengthOfString;i++){
if(string[i] == 'e'){ <-----------
count++;
}

上面带箭头的行中的语法现在不起作用,因为它会认为我指的是另一个字符串指针。在这种情况下,如果我想一个字符一个字符地遍历该字符串,我该怎么办?

最佳答案

首先,如果它是一个 char*,你需要确保它指向的字符数组被一个 \0 字符消除,使 strlen () 工作..

考虑到它被 \0 消除并且 lengthOfString 包含正确的长度,您需要的只是取消引用指针..

声明 string[i] 在内部更改为 *(string+i)。所以你不需要额外的*

for(int i = 0;i < lengthOfString;i++){
if(string[i] == 'e'){
count++;
}

上面更改后的代码足以让你继续。


编辑

有点难以理解您要说的内容,但如果我没记错的话,您的代码表明要搜索的字符串由存储在 string[0] 的指针指向。因为你只在上面使用了 strlen()

在这种情况下,您可以使用

for(int i = 0;i < lengthOfString;i++){
if(*(string[0]+i) == 'e'){
count++;
}

或者

for(int i = 0;i < lengthOfString;i++){
if(string[0][i] == 'e'){
count++;
}

关于c - 如何遍历char指针来计算特定字符存在的类型数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34985160/

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