Так что я новичок в C ++, я пишу код в JS, по какой-то причине я не могу понять ошибку здесь, пожалуйста, помогите мне. Спасибо!
#include <iostream>
using namespace std;
int search(char input, char sentence[]){
for(int i = 2; i != '\0'; i++){
if(sentence[i] == input){
return i;
}else{ return -1; }
}
}
int main()
{
char key[20] = "hey my name is sid!";
char ser = 'm';
cout << search(ser,key);
return 0;
}
Ваше условие в цикле for неверное, вы не проверяете строку только на индекс. Также, если ваш персонаж не совпадает, вы не хотите выходить немедленно.
Правильный код будет:
for(int i = 0; sentence[i] != '\0'; i++)
{
if(sentence[i] == input)
{
return i;
}
}
return -1;
Если вы хотите начать поиск с третьего символа, сначала убедитесь, что ваша строка содержит как минимум три элемента:
if(strlen(sentence)>=3)
{
for(int i = 2; sentence[i] != '\0'; i++)
{
...
}
...
}
Для вашей функции поиска вы действительно проверяете только первый символ в цикле, а затем возвращаетесь. Вы должны переместить «возврат -1;» вне цикла for, так как он будет вызываться только после того, как вся строка будет проверена на значение и не найдена.
int search(char input, char sentence[]) {
for (int i = 2; sentence[i] != '\0'; i++) {
if (sentence[i] == input) {
return i;
}
}
return -1;
}
в дополнение к изменению условий цикла for, как упоминали другие пользователи.