基本的に、コードはユーザー入力を求めています。私は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;
}
}
それは '++ i'、あなたは'の最初の反復にreturn'ingされていませんループ – UnholySheep
バッファオーバーランの問題があります: 'std :: cin >> c'。 12文字を入力して調べます。 –
'FindIndexOfChar'のループを' strchr'に置き換えることを強くお勧めします。 'strchr'は配列へのポインタを返すので、' strchr'の結果から配列の先頭を引いてインデックスを得ることができます。インデックスを計算する前に 'strchr'の結果を検証することを忘れないでください。 –