基本上,代码要求用户输入。我输入单词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;
}
}
答案 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;