使用指针作为参数查找数组中char的索引

时间:2017-10-26 21:26:11

标签: c++ arrays pointers

我有一个主函数,它有代码:

int main()
{
    const int SIZE = 80;
    char ca[SIZE];
    char * pc = ca;
    int fPrints = 0;
    int bPrints = 0;
    int lengthChecks = 0;

    ReadString(pc, SIZE);
    char test = 'X';
    int index = 0;
    index = FindIndexOfCharacter(pc, test);
    std::cout << test << " index " << index << std::endl;
    test = 's';
    index = 0;
    index = FindIndexOfCharacter(pc, test);
    std::cout << test << " index " << index << std::endl;

    std::cout << "Press ENTER";
    std::cin.get();
    return 0;
}

读取输入的函数

void ReadString(char * c, int maxLength)
{
    std::cout << "Enter a string less than " << maxLength << " characters." << std::endl;

    std::cin.getline(c, maxLength);
}

该函数应该通过使用指向数组的指针和测试值返回数组中字符的索引并返回

int FindIndexOfCharacter(char * c, char testVal) 
{
    for (int i = 0; i < strlen(c); i++)
    {
        if (c[i] == testVal) {
            return (int)i;
        }
        else
        {
            return -1;
        }
    }

}

我得到的所有搜索都是-1,我不确定我做错了什么。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

你在FindIndexOfCharacter()过早回来了!如果您遇到的第一个字符与testVal不匹配,则FindIndexOfCharacter()会过早返回。

尝试在for循环后移动return -1;;这样,只有在检查了c中的每个字符后,才会返回-1:

int FindIndexOfCharacter(char * c, char testVal) 
{
    for (int i = 0; i < strlen(c); i++)
    {
        if (c[i] == testVal) {
            return (int)i;
        }
    }

    return -1;
}