Запись из файла С++
Помогите, пожалуйста разобраться. Пытаюсь найти сроку в файле, вот код:
int TelephoneDirectory::search(const char* data)
{
FILE* file;
int numberString{ 0 };
if (!(file = fopen(this->path_, "r")))
{
std::cout << "file opening Error!";
}
else {
const int sizeData{30};
char* line = new char[sizeData];
while (!feof(file))
{
fgets(line, sizeData, file);
if (strcmp(line, data) == 0)
{
fclose(file);
return numberString;
}
++numberString;
}
}
fclose(file);
return -1;
}
Метод возвращает -1, но должен вернуть номер строки. Функция strcmp не возвращает 0. Не пойму почему
Ответы (2 шт):
Автор решения: RandomDice 779
→ Ссылка
- Замените
int numberString{ 0 };
на
int numberString = 0;
Как я понимаю, в этой переменной у вас число строк.
2.Тоже самое с const int sizeData
const int sizeData{30};
на
const int sizeData = 30;
У вас же не массивы!
Автор решения: Ahmed_08
→ Ссылка
Понял. Функция fgets добавляет "\n" в конце строки, а в data его нет, поэтому строки не равны