【发布时间】:2016-05-01 07:45:24
【问题描述】:
例如,如果我有一个普通字符串并且我正在寻找字符串中a 的数量,我会执行以下操作:
char string[] = "HelloThere";
int lengthOfString = strlen(string);
int count = 0;
for(int i=0;i<lengthOfString;i++){
if(string[i] == 'e'){
count++;
}
}
但现在我有一个 char 指针,但我不确定如何正确操作。这是我所做的,但它产生了错误。
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++;
}
上面箭头线中的语法现在不起作用,因为它会认为我指的是另一个字符串指针。如果我想逐个字符地遍历该字符串,在这种情况下我会怎么做?
【问题讨论】:
-
您不需要取消引用
string[i]调用,因此请删除您标记为错误的行中的 *。 -
@JohannesWalcher 但这会遍历字符串吗?我的意思是 string[0] 将是字符串中的第一个字符?
-
*string[i] == 'e'-->*string++ == 'e'或string[i] == 'e' -
如果你只看发布的代码
string是一个未初始化的指针。如果我们假设string是一个有效的指针,您可以通过使用if(string[i] == 'e')而不是if(*string[i] == 'e')来解决您的问题。