For Loop not looping and detection Char Array [Pointers and Char Arrays]

时间:2017-07-05 16:25:49

标签: c++ arrays pointers

基本上,代码要求用户输入。我输入单词hotkdog,我想使用函数FindIndexOfCharacter' k',这是3.然而,函数总是返回-1,所以我想我的循环不是+ +我出于某种原因?

#include <iostream>
#include <cstring>
#include <string>

void ReadString(char * c, int maxLength);
int FindIndexOfCharacter(char * c, char testVal);

int main()
{
    const int SIZE = 10;
    char ca[SIZE];
    char * cpointer = ca;

    ReadString(cpointer, 10);
    std::cout << FindIndexOfCharacter(cpointer, 'k');
    system("pause");
}

void ReadString(char * c, int Length)
{
    std::cout << "Enter a string " << Length << " characters." << std::endl;
    std::cin >> c;
}

int FindIndexOfCharacter(char * c, char Val)
{
    int sizeOfArray2 = std::strlen(c);
    std::cout << sizeOfArray2 << std::endl; // this confirms array size

    for (int i = 0; i < sizeOfArray2; ++i)
    {
        if (c[i] == Val)
            return i;
        else
            return -1;
    }
}

2 个答案:

答案 0 :(得分:3)

for (int i = 0; i < sizeOfArray2; ++i)
{
    if (c[i] == Val)
        return i;
    else
        return -1;
}

您只检查第一个字符。如果不匹配,则立即返回-1

相反,你需要继续下一个角色。

也许试试:

for (int i = 0; i < sizeOfArray2; ++i)
{
    if (c[i] == Val)
        return i;
}

return -1;

答案 1 :(得分:1)

你可以改变你的功能:

char * p_found = strchr(c, Val);
if (p_found != nullptr)
{
  return p_found - c;
}
return -1;