Автор Тема: [C++] Как проверить текст в переменной?  (Прочитано 4377 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Qwentor

  • Пользователь
  • Сообщений: 935
  • Пол: Мужской
    • ВКонтакте
    • Просмотр профиля
FILE *file; //Объявляем переменную типа файл и присваиваем имя file
char*filename="C:\\ds\\settings.txt"; //Объявлем переменную имя файла, эта переменная указавает на путь к файлу
char filetext[50]="none"; //Объявляем переменную текст файла.


file = fopen(filename, "r"); /*Открывает файл командой fopen, далее идет путь до файла и режим открытия, у нас это чтение */

if (fopen != 0) //Если удалось отрыть файл
{
fgets(filetext,50,file); //команда fgets присваивает пременной filetext содержимое файла
cout << "filetext = " << filetext << endl;

}
else //Если файл не возможно открыть
{
cout<<"Ошибка окрытия файла"; //Ошибка
}
fclose(file); //После работы файл необходимо закрыть
if (filetext=="used")
{cout << "Yes!"<<endl;}
else
{cout << "No!"<<endl;}
cout << filetext<<endl;


Не пойму. в файле текст "used'", выводится на экран он правильно, из переменной тоже правильно читается, а при попытке проверить "used" там или не "used" всегда выдает No! :( Проверять надо как-то по-другому?
Прошу сильно ногами не бить, пока еще совсем новичок.

Оффлайн DeniSS

  • Пользователь
  • Сообщений: 1088
  • Пол: Мужской
  • Сама скрытность
    • ВКонтакте
    • Просмотр профиля
Re: [C++] Как проверить текст в переменной?
« Ответ #1 : 01 Май 2011, 22:51:57 »
Дык правильно, что ноу. У тебя char[50], а ты сравниваешь с char[4].
Юзаем strcmp.
И по плюхплюху тема ж вроде есть уже.

Оффлайн Qwentor

  • Пользователь
  • Сообщений: 935
  • Пол: Мужской
    • ВКонтакте
    • Просмотр профиля
Re: [C++] Как проверить текст в переменной?
« Ответ #2 : 01 Май 2011, 23:25:49 »
Цитата: DeniSS
Юзаем strcmp.
Спс, теперь работает.

Добавлено позже:
Цитата: DeniSS
И по плюхплюху тема ж вроде есть уже.
Где?

Добавлено позже:
Блин, теперь всегда Yes! почему-то :(

if(strcmp(filetext, "used"))
{
   cout << "Yes!"<<endl;

}
else
{
   cout << "No!"<<endl;
  
}

причем на экран выводится правильный текст в файле (т.е. тот который теперь  не "used"), а при сравнении такая фигня
« Последнее редактирование: 01 Май 2011, 23:28:12 от Qwentor »

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: [C++] Как проверить текст в переменной?
« Ответ #3 : 02 Май 2011, 01:08:55 »
Цитата: Qwentor
Где?
You're welcome

Оффлайн Qwentor

  • Пользователь
  • Сообщений: 935
  • Пол: Мужской
    • ВКонтакте
    • Просмотр профиля
Re: [C++] Как проверить текст в переменной?
« Ответ #4 : 02 Май 2011, 10:37:08 »
разобрался, должно быть
if(strcmp(filetext, "used")==0) { }

Цитата: gepar
You're welcome
Спасибо, буду теперь писать там. По запросу C++ не находило, видимо С кириллицей.

« Последнее редактирование: 02 Май 2011, 10:56:36 от Qwentor »

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: [C++] Как проверить текст в переменной?
« Ответ #5 : 02 Май 2011, 10:44:32 »
Нет, просто поиск на плюсы не реагирует и ищет только буквы, а букв в запросе "c++" не много.

Оффлайн DeniSS

  • Пользователь
  • Сообщений: 1088
  • Пол: Мужской
  • Сама скрытность
    • ВКонтакте
    • Просмотр профиля
Re: [C++] Как проверить текст в переменной?
« Ответ #6 : 02 Май 2011, 10:55:23 »
Пока я писал ответ, успел)))
А вообще зачем читать 50 чаров из файла, в котором их всего 4? Можно ж проверить длину и подогнать ровно столько же памяти.

Добавлено позже:
разобрался, должно быть
if(strcmp(filetext, "used\n")==0) { }
Это если ты ставил переход на следующую строку.

Оффлайн Qwentor

  • Пользователь
  • Сообщений: 935
  • Пол: Мужской
    • ВКонтакте
    • Просмотр профиля
Re: [C++] Как проверить текст в переменной?
« Ответ #7 : 02 Май 2011, 10:57:44 »
Цитата: DeniSS
Это если ты ставил переход на следующую строку.
да, \n убрал уже, иначе не работает

Оффлайн DeniSS

  • Пользователь
  • Сообщений: 1088
  • Пол: Мужской
  • Сама скрытность
    • ВКонтакте
    • Просмотр профиля
Re: [C++] Как проверить текст в переменной?
« Ответ #8 : 02 Май 2011, 11:16:17 »
И то оно бы было как \r\n .