|
0 / 0 / 0
Регистрация: 09.04.2021
Сообщений: 27
|
|
Не получается сравнить два значения char30.09.2021, 15:53. Показов 3527. Ответов 45
Метки нет (Все метки)
Здравствуйте.
Задача взять слово на кирилице из файла, записать его в переменную типа char (расположенную в структуре Event класса Object) и сравнить ее с другой переменной типа char. Сравнить никак не получается, хотя слова одинаковые. Было сделано: SetConsoleCP(1251); // Чтоб SetConsoleOutputCP(1251); // мог сравнить русский текст в вводе/выводе шрифт LUCIDA console //в вводе/выводе и разные попытки сравнить слова: 1. char condition[11] = { "сделано" }; object[i].event.Status); //переменная типа char, записанная из файла варианты сравнений: if (strcmp(condition, object[i].event.Status)==0) //не сравнивает одинаковые значения if (strcmp("сделано", object[i].event.Status) == 0) //не сравнивает одинаковые значения пробовал также привести к типу string и сравнить их: if (string1==string2), или использовать функцию stringcompare тоже без результата. использовал также другие варианты, читал литературу и ничто не сравботало. Кто-ть знает в чем дело? Подскажите плиз.
0
|
|
| 30.09.2021, 15:53 | |
|
Ответы с готовыми решениями:
45
Как сравнить два char string Сравнить два массива типа char Как сравнить два указателя типа char? |
|
0 / 0 / 0
Регистрация: 09.04.2021
Сообщений: 27
|
|
| 01.10.2021, 16:40 [ТС] | |
|
0
|
|
|
из племени тумба-юбма
|
||
| 01.10.2021, 16:44 | ||
\0. Если это не так, то сравнение будет работать не правильно.
1
|
||
|
0 / 0 / 0
Регистрация: 09.04.2021
Сообщений: 27
|
|
| 01.10.2021, 16:55 [ТС] | |
|
Наверное попробую выложить те части кода, которые выполняются, без неиспользованных строк, для краткости
void ShowMadeEvents(int count2, Object*object, struct tm*tm) ////////////////////////////////////////////// { int number = 0; char s[11] = { "" }; char condition[40] = { "сделано\0" }; for (int i(0);i <= count2;i++) { // cout << "\nстатус " << object[i].event.Status << "\n"; if (strcmp(condition, object[i].event.Status)==0) /// не работает "сделано" { number++; if (number == 1) { cout << "\nСписок сделанных событий\n"; } cout << number << object[i].event.EventDate.tm_mday << "." << object[i].event.EventDate.tm_mon << "." << object[i].event.EventDate.tm_year << " " << object[i].event.Name << " " << object[i].event.Description << " " << object[i].event.Importance << " " << object[i].event.periodicity << " " << object[i].event.Category << " " << object[i].event.Status << " " << object[i].event.AmountOfDays << endl; } } if (number == 0) { cout << "\nСделанных событий не обнаружено.\n"; } } void ShowMenu(int count1, Object *object, struct tm*tm) { system("cls"); char s[10] = ""; int choice = 0; int choiceFirst = 1; int choiceChoice = 0; while (choiceChoice != 9) { system("cls"); cout << "\n вход в функцию ShowMenu count1 = " << count1 << endl; cout << "Выберите дейстивие: \n"; cout << "1. Посмотреть список:\n"; cout << "2. Редактировать список:\n"; cout << "3.Внести новый случай.\n"; cin >> choice; system("cls"); cout << "\n вход в функцию ShowMenu count1 = " << count1 << endl; if (choice == 1) { int menuCounter = 2; while (menuCounter == 2) { system("cls"); cout << "Выберите вариант просмотра:\n"; //Обработать действия cout << "1. Посмотреть весь список.\n"; cout << "2. Посмотреть список предстоящих дел.\n"; cout << "3. Посмотреть список выполненных дел.\n "; cout << "4. Посмотреть список невыполненных дел.\n "; cout << "5. Посмотреть список просроченных дел.\n "; cout << "6. сохранить данные\n"; cout << "7. Удалить данные\n"; cout << "8. Сортировать по дате\n"; cout << "9. Выйти из программы\n\n"; cin >> choiceChoice; system("cls"); switch (choiceChoice) { case 1: for (int t(0);t <= count1;t++) { cout << t + 1 << ". " << object[t].event.EventDate.tm_mday << "." << object[t].event.EventDate.tm_mon << "." << object[t].event.EventDate.tm_year << " " << object[t].event.Name << " " << object[t].event.Description << " " << object[t].event.Importance << " " << object[t].event.periodicity << " " << object[t].event.Category << " " << object[t].event.Status << " " << object[t].event.AmountOfDays << endl; } system("pause"); system("cls"); cout << "\nВыберите действие:\n"; cout << "\n1. Вернуться в главное меню. \n"; cout << "\n2. Вернуться в текущее меню. \n"; cout << "\n3. Выйти из программы. \n"; cin >> menuCounter; if (menuCounter == 3) { choiceChoice = 9; } break; case 2: //проверка ShowComingEvents(count1, object, tm); system("pause"); system("cls"); cout << "\nВыберите действие:\n"; cout << "\n1. Вернуться в главное меню. \n"; cout << "\n2. Вернуться в текущее меню. \n"; cout << "\n3. Выйти из программы. \n"; cin >> menuCounter; if (menuCounter == 3) { choiceChoice = 9; } break; case 3: ShowMadeEvents(count1, object, tm); system("pause"); system("cls"); cout << "\nВыберите действие:\n"; cout << "\n1. Вернуться в главное меню. \n"; cout << "\n2. Вернуться в текущее меню. \n"; cout << "\n3. Выйти из программы. \n"; cin >> menuCounter; if (menuCounter == 3) { choiceChoice = 9; } break; case 4: ShowNotDoneEvents(count1, object, tm); system("pause"); system("cls"); cout << "\nВыберите действие:\n"; cout << "\n1. Вернуться в главное меню. \n"; cout << "\n2. Вернуться в текущее меню. \n"; cout << "\n3. Выйти из программы. \n"; cin >> menuCounter; if (menuCounter == 3) { choiceChoice = 9; } break; case 5: ShowOverdueEvents(count1, object, tm); system("pause"); system("cls"); cout << "\nВыберите действие:\n"; cout << "\n1. Вернуться в главное меню. \n"; cout << "\n2. Вернуться в текущее меню. \n"; cout << "\n3. Выйти из программы. \n"; cin >> menuCounter; if (menuCounter == 3) { choiceChoice = 9; } break; case 6: cout << "\n сохранение count1 = " << count1 << endl; saveData(count1, object); cout << "\n Данные сохранены \n"; system("pause"); system("cls"); cout << "\nВыберите действие:\n"; cout << "\n1. Вернуться в главное меню. \n"; cout << "\n2. Вернуться в текущее меню. \n"; cout << "\n3. Выйти из программы. \n"; cin >> menuCounter; if (menuCounter == 3) { choiceChoice = 9; } break; case 7: DeleteEvent(count1, object, tm); count1--; cout << "\nДанные удалены\n"; system("pause"); system("cls"); cout << "\nВыберите действие:\n"; cout << "\n1. Вернуться в главное меню. \n"; cout << "\n2. Вернуться в текущее меню. \n"; cout << "\n3. Выйти из программы. \n"; cin >> menuCounter; if (menuCounter == 3) { choiceChoice = 9; } break; case 8: SortByDate(count1, object, tm); cout << "\nДанные отсортированы.\n"; system("pause"); system("cls"); cout << "\nВыберите действие:\n"; cout << "\n1. Вернуться в главное меню. \n"; cout << "\n2. Вернуться в текущее меню. \n"; cout << "\n3. Выйти из программы. \n"; cin >> menuCounter; if (menuCounter == 3) { choiceChoice = 9; } break; case 9: //system("cls"); //cout break; } } } if (choice == 2) { int menuCounter = 2; while (menuCounter == 2) { system("cls"); int choice3 = 0; cout << "Выберите событие, которое надо отредактировать:\n"; cout << "1. Выбрать событие по порядковому номеру.\n"; cout << "2. Выбрать событие по наименованию.\n"; cin >> choice3; system("cls"); if (choice3 == 1) { changeDataByNumber(count1, object, tm); //изменение changeDataByNumber (count 1, object) system("pause"); system("cls"); cout << "\nВыберите действие:\n"; cout << "\n1. Вернуться в главное меню. \n"; cout << "\n2. Вернуться в текущее меню. \n"; cout << "\n3. Выйти из программы. \n"; cin >> menuCounter; if (menuCounter == 3) { choiceChoice = 9; } } if (choice3 == 2) { cout << "\ncount1= " << count1 << endl; //??почему count1=1, а не 0 changeDataByName(count1, object, tm); system("pause"); system("cls"); cout << "\nВыберите действие:\n"; cout << "\n1. Вернуться в главное меню. \n"; cout << "\n2. Вернуться в текущее меню. \n"; cout << "\n3. Выйти из программы. \n"; cin >> menuCounter; if (menuCounter == 3) { choiceChoice = 9; } } } } if (choice == 3) //изменения не сохраняются { int menuCounter = 2; while (menuCounter == 2) { count1++; AddNewEvents(count1, object, tm); system("pause"); system("cls"); cout << "\nВыберите действие:\n"; cout << "\n1. Вернуться в главное меню. \n"; cout << "\n2. Вернуться в текущее меню. \n"; cout << "\n3. Выйти из программы. \n"; cin >> menuCounter; if (menuCounter == 3) { choiceChoice = 9; } } } } } int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); setlocale(LC_ALL, "rus"); //char i = 0; time_t now = time(NULL); struct tm *tm = localtime(&now); //ifstream stream; Object object[20]; /// РАЗМЕР!!!!!!!!!!!!! printf("Сегодня:%2d.%02d.%04d", tm->tm_mday, 1 + tm->tm_mon, 1900 + tm->tm_year); printf("\n______________________________ ____________________________\n"); //std::cout << std::setw(60) << "Сегодня:" << '\n'; std::cout << '\n'; /////////////////////////////////////////////////////////////////////////////////////////////////////////////// //char i = 0; ifstream ifs("C:\\Organizer4.txt"); string buff; char cDay[40]; int i = 0; while (!ifs.eof()) { getline(ifs, buff); strcpy(cDay, buff.c_str()); object[i].event.EventDate.tm_mday = atoi(cDay); cout << "\n"<<i+1<<". " << object[i].event.EventDate.tm_mday << " "; getline(ifs, buff); strcpy(cDay, buff.c_str()); object[i].event.EventDate.tm_mon = atoi(cDay); cout <<object[i].event.EventDate.tm_mon << " "; getline(ifs, buff); strcpy(cDay, buff.c_str()); object[i].event.EventDate.tm_year = atoi(cDay); cout << object[i].event.EventDate.tm_year << " "; getline(ifs, buff); strcpy(object[i].event.Name, buff.c_str()); cout << object[i].event.Name << " "; getline(ifs, buff); strcpy(object[i].event.Description, buff.c_str()); cout << object[i].event.Description << " "; getline(ifs, buff); strcpy(object[i].event.Importance, buff.c_str()); cout << object[i].event.Importance << " "; getline(ifs, buff); strcpy(object[i].event.periodicity, buff.c_str()); cout << object[i].event.periodicity<< " "; getline(ifs, buff); strcpy(object[i].event.Category, buff.c_str()); cout << object[i].event.Category << " "; getline(ifs, buff); strcpy(object[i].event.Status, buff.c_str()); cout << object[i].event.Status << " "; getline(ifs, buff); strcpy(cDay, buff.c_str()); object[i].event.AmountOfDays = atoi(cDay); cout << object[i].event.AmountOfDays << " "; i++; //cout << "\n" << object.event.EventDate.tm_year << " \n"; //cout << "\n" << object.event.EventDate.tm_year << "\n"; //cout << "\n" << object.event.Category << " \n"; //cout << "\n" << object.event.Description << " \n"; } ifs.close(); if (i > 0) i--; if (i == 0) { int choice = 0; printf("\nБАЗА ДАННЫХ ПУСТА. Вам следует заполнить события.\n\n"); cout << "Вы хотите заполнить события?\n\n"; cout << "Да-1 Нет-0\n"; cin >> choice; system("cls"); int j = i; while (choice) { if (j < 20) { FillObject(j, object); } /// РАЗМЕР!!!!!!!!!!!!! else if (j >= 20) { /// РАЗМЕР!!!!!!!!!!!!! cout << "\nБаза данных полна. Увеличьте размер.\n"; ShowMenu(j, object, tm); } // ввести дату в формате дд.мм.гг j++; //заполнить по элементам массива object [] i = j; if (j < 20) //изменить обратно с 3 на 10 /// РАЗМЕР!!!!!!!!!!!!! { cout << "\n\nВы хотите заполнить события?\n\n"; cout << "Да-1 Нет-0\n"; cin >> choice; system("cls"); if (choice == 0) { saveData(j, object); cout << "Ваши данные сохранены\n"; } } if (j == 20) ////изменить обратно с 3 на 10 /// РАЗМЕР!!!!!!!!!!!!! { cout << "\n Записи в базе данных закончились. Надо увеличить размер базы данных\n"; cout << "Вы хотите сохранить данные?\n"; choice = 0; cin >> choice; system("cls"); if (choice == 0) { // saveData(j, object); cout << "Ваши данные сохранены\n"; } } } } if (i > 0) { char s[11] = ""; cout << " \n\n"; // system("cls"); system("pause"); ShowMenu(i, object, tm); } system("pause"); return (0); }
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||||||
| 01.10.2021, 16:57 | ||||||||
|
мама Стифлера, "строка" - этот литерал в с++ уже является массивом, с нулем на конце.
UUU, Важны там далеко не все. Только посмотреть какие библиотеки вы подключали. Какая кодировка в этих исходниках. Также настройки проекта.
0
|
||||||||
|
0 / 0 / 0
Регистрация: 09.04.2021
Сообщений: 27
|
|
| 01.10.2021, 17:23 [ТС] | |
|
мама Стифлера,
файл разбит построчно, там вроде выставляется \0 автоматически? Добавлено через 1 минуту SmallEvil, сейчас попробую, пока у меня в атачменте почему-то не отображается файл cpp/ Добавлено через 14 минут блин, не могу сделать аттачмент файла... пытаюсь приложить файл slh и не получается... Не пойму в чем дело... Добавлено через 49 секунд Может надо скопировать код в блокнот и приложить его? Добавлено через 7 минут скопировал в блокнот и сделал аттачмент... не проходит из-за большого размера файла.... Добавлено через 59 секунд Как можно отправить?
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||||||||||
| 01.10.2021, 17:38 | ||||||||||||
0
|
||||||||||||
|
0 / 0 / 0
Регистрация: 09.04.2021
Сообщений: 27
|
|
| 01.10.2021, 17:39 [ТС] | |
|
код, в ворде пойдет?
0
|
|
|
0 / 0 / 0
Регистрация: 09.04.2021
Сообщений: 27
|
|
| 01.10.2021, 17:41 [ТС] | |
|
файл с данными
0
|
|
|
0 / 0 / 0
Регистрация: 09.04.2021
Сообщений: 27
|
||
| 01.10.2021, 17:46 [ТС] | ||
|
исправил "Russian" компилятор не ругается
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 01.10.2021, 17:47 | ||
|
Удалить все папки debug, release , удалить файлы db и прочие большого размера. Как в первый раз
0
|
||
|
0 / 0 / 0
Регистрация: 09.04.2021
Сообщений: 27
|
||
| 01.10.2021, 17:59 [ТС] | ||
|
вордовский файл читается тяжело, из-за комментариев в тексте, могу их убрать
Добавлено через 1 минуту ![]() Сейчас попробую... Добавлено через 50 секунд А какой файл в папке-то оставить? Добавлено через 5 минут Нужен файл .slh? пишет некорректный файл
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||||
| 01.10.2021, 18:00 | ||||||
|
UUU, хватит
![]() попробуйте создать новый проэкт, и скомпилировать+выполнить этот код.
0
|
||||||
|
0 / 0 / 0
Регистрация: 09.04.2021
Сообщений: 27
|
|
| 01.10.2021, 18:04 [ТС] | |
|
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 01.10.2021, 18:06 | ||
Убери строку. Почти уверен что он тебе расскажет что strcmp "использовать" "нельзя".
0
|
||
|
0 / 0 / 0
Регистрация: 09.04.2021
Сообщений: 27
|
||
| 01.10.2021, 18:14 [ТС] | ||
|
"Russian_Russia.1251"
ок ок Добавлено через 2 минуты Добавлено через 3 минуты Не совсем понял, #define _CRT_SECURE_NO_WARNINGS не дает использовать strcmp?
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 01.10.2021, 18:17 | ||
|
в больших проэктах не рекомендуется использовать глоабльно пространства имен, таких как std
типа using namespace std; потом ищи глюки Добавлено через 1 минуту В моем примере и студии почему strcmp используется из string.h. Хотя я его и не подключал ...
0
|
||
|
0 / 0 / 0
Регистрация: 09.04.2021
Сообщений: 27
|
|
| 01.10.2021, 18:19 [ТС] | |
|
убрать using namespace std и #Windows.h?
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 01.10.2021, 18:33 | ||
|
убрать using namespace std. не знаю справишься ли с этим и поможет ли. До конца непонятно где-что у вас криво идет... пока смотрю исходник.
0
|
||
|
0 / 0 / 0
Регистрация: 09.04.2021
Сообщений: 27
|
||
| 01.10.2021, 18:39 [ТС] | ||
|
Спасибо, что смотрите... будем надеятся на лучшее...
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||||
| 01.10.2021, 19:00 | ||||||
Сообщение было отмечено UUU как решение
Решение
Что это за магическая строка ?
UUU, у вас в текстовом файле лишние пробелы, то есть "сделано" != "сделано " Добавлено через 1 минуту функция getline(stream,string) читает все с пробелами до маркера конца строки.
1
|
||||||
| 01.10.2021, 19:00 | |
|
нужно сравнить два массива указателей типа char Сравнить два int числа расположенных в char* строке нужно сравнить два массива указателей типа char Не получается правильно сравнить два числа Не получается сравнить два вектора на равенство Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|