查找字符'的索引;a';排列 #包括 #包括 int main() { char hurray[]=“我们大家好”;//字符串 char*hurrayptr=hurray;//Pinter到数组hurray int i=0;//用于for循环以显示位置和字符 int d=0;//在printf语句中用于计算位置 int k; 整数计数=0; 整数指数; int f=0; printf(“\t位置\t字符”); 而(万岁[i]>20){ 对于(i=0;i20){试图做什么?它将printf语句循环20次以显示数组中的字符及其索引如果您有语法错误,请先尝试将其编辑成可编译的内容。哦,好的,这更有意义,谢谢!! while (hurray[i] > 20) {

查找字符'的索引;a';排列 #包括 #包括 int main() { char hurray[]=“我们大家好”;//字符串 char*hurrayptr=hurray;//Pinter到数组hurray int i=0;//用于for循环以显示位置和字符 int d=0;//在printf语句中用于计算位置 int k; 整数计数=0; 整数指数; int f=0; printf(“\t位置\t字符”); 而(万岁[i]>20){ 对于(i=0;i20){试图做什么?它将printf语句循环20次以显示数组中的字符及其索引如果您有语法错误,请先尝试将其编辑成可编译的内容。哦,好的,这更有意义,谢谢!! while (hurray[i] > 20) {,c,arrays,pointers,C,Arrays,Pointers,我试图让它显示数组中的元素数hurray[],然后它会找到数组中出现“a”的次数。然后我需要找到找到的“a”的索引。我只能让它找到第一个“a”,然后它停止。如何修复此问题?此代码: #include <stdio.h> #include <string.h.> int main() { char hurray[] = "Hooray for all of us"; //Character String char *hurrayptr = hurray; //Pin

我试图让它显示数组中的元素数hurray[],然后它会找到数组中出现“a”的次数。然后我需要找到找到的“a”的索引。我只能让它找到第一个“a”,然后它停止。如何修复此问题?

此代码:

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


int main()
{
char hurray[] = "Hooray for all of us"; //Character String
char *hurrayptr = hurray;   //Pinter to array hurray
int i = 0; //Used in for loop to display position and character
int d = 0; //Used in printf statement to count the position 
int k;
int count = 0;
int index;
int f = 0;

printf("\tPosition\t Character"); 

while (hurray[i] > 20) { 

    for (i = 0; i < 20; i++) {  

        printf("\n\t hurray[%d]\t\t  %c", d++, *hurrayptr++); 

    }
}

for (k = 0; hurray[k]!= '\0'; k++)      
    if ('a' == hurray[k]) {  //specifies character 'a' is to be counted

        count++;    
    }
        printf("\n'A' occurs %d times in this array\n", count); 

        hurrayptr = strchr(hurray, 'a');
        index = (int)(hurrayptr - hurray);
        f++;

        printf("The letter 'a' was find in hurray[%d]\n", index);

return 0;
}
只查找第一个字母。您需要在循环中执行以下步骤:

hurrayptr = strchr(hurray, 'a');
index = (int)(hurrayptr - hurray);
f++;

printf("The letter 'a' was find in hurray[%d]\n", index);
strchr
的第一个调用从字符串开头开始,循环内部的调用开始查找最后找到的实例

此外,这是不需要的:

hurrayptr = strchr(hurray, 'a');
do {
    index = (int)(hurrayptr - hurray);
    printf("The letter 'a' was find in hurray[%d]\n", index);
    hurrayptr = strchr(hurrayptr+1, 'a');
} while (hurrayptr);

您有一个for循环,它已经打印了所有字符。
while
是多余的。

while(hurray[i]>20){试图做什么?它将printf语句循环20次以显示数组中的字符及其索引如果您有语法错误,请先尝试将其编辑成可编译的内容。哦,好的,这更有意义,谢谢!!
while (hurray[i] > 20) {