Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Alex_The_King
1 / 1 / 0
Регистрация: 31.07.2014
Сообщений: 55
#1

Сравнение символьных буфферов (массивов)

31.07.2014, 12:47. Просмотров 936. Ответов 3
Метки нет (Все метки)

Добрый всем день. Заранее прошу прощения, если такая тема уже существует или существовала.
Не смог корректно сформулировать поисковый запрос.

Я новичок в C++. Задача состоит в том, чтобы добавить команду на отключение, после отправки сообщения со словом quit через сокеты от клиента ===> серверу.
С задачами клиента и сервера я справился, более или менее. Однако попытка сравнения, ничего не дает.

Пример кода:
C++
1
2
3
4
5
6
7
8
9
10
while(1){
    int size = recv(my_sock, buffer, sizeof(buffer), 0);
    if(size < 0){ cout << "Error. Client left" << endl; closesocket(my_sock); exit(0);}
    cout << buffer << endl;
    if(buffer=="quit"){
        cout << "WE IN IF" << endl;
        shutdown(my_sock, SD_BOTH);
        }
    }
}
Пробовал сравнивать через строковые функции strcmp, strncmp. Ноль результата. Даже такой код не выполняется корректно:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
using namespace std;
 
int main(){
    char quit[255] = "quit";
    char buffer[255] = "quit";
    if(quit==buffer){ cout << "WE'RE IN IF" << endl; }
}
Использую Code::Blocks, компилятор GNU GCC. Думал дело в \0, но до конца не уверен. Или тут теряются байты в массиве?
Какой тут диагноз и как это лечится?
Сам новичок, поэтому буду благодарен более-менее понятным объяснениям. Буду рад вообще любой помощи.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2014, 12:47
Ответы с готовыми решениями:

Сравнение двух символьных массивов - char C++
Доброго времени суток! Столкнулся с проблемой кода программы. Мне нужно...

Сравнение символьных строк
Подскажите пожалуйста какие сделать в программе исправления чтобы начало...

Сравнение двух символьных строк
условие задачи состоит в том,чтобы написать программу для сравнения двух...

Копирование символьных массивов
Вот самые проблемные места: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Вопрос по выводу символьных массивов
Никак не могу понять, почему при наличии символьного массива, например char...

3
Vourhey
Почетный модератор
6491 / 2265 / 185
Регистрация: 29.07.2006
Сообщений: 12,534
31.07.2014, 12:51 #2
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Цитата Сообщение от Alex_The_King Посмотреть сообщение
if(buffer=="quit")
Нельзя так сравнивать строки.
Цитата Сообщение от Alex_The_King Посмотреть сообщение
Пробовал сравнивать через строковые функции strcmp, strncmp. Ноль результата
А код? strncmp работает. С этим как бы спорить бесполезно это значит, что ошибка в твоем коде.
1
Alex_The_King
1 / 1 / 0
Регистрация: 31.07.2014
Сообщений: 55
31.07.2014, 12:56  [ТС] #3
Спасибо, сейчас опробую

Добавлено через 3 минуты
Не получилось. Возможно что-то не так делаю.

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <cstring>
 
using namespace std;
 
int main()
{
    char buff[255];
    cin.getline(buff, 255);
    char quit[255] = "quit";
    if(strncmp(buff, quit, 5)){ cout << "hello" << endl; }
}
ВСЕ ВЫШЛО. БЛАГОДАРЮ. Надо было добавить в if вот что: strncmp(buff, quit, 5)==0
0
Vourhey
Почетный модератор
6491 / 2265 / 185
Регистрация: 29.07.2006
Сообщений: 12,534
31.07.2014, 17:42 #4
Цитата Сообщение от Alex_The_King Посмотреть сообщение
ВСЕ ВЫШЛО. БЛАГОДАРЮ. Надо было добавить в if вот что: strncmp(buff, quit, 5)==0
Надо внимательнее читать документацию к функции, там написано, что возвращается 0, когда группа символов идентична другой группе.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2014, 17:42

Заполнение двумерных символьных массивов
Помогите пожалуйста в учебниках про строки вообще мало что пишут, как заполнять...

Поразрядная сортировка символьных массивов
Всем привет! Кто нибудь может показать пример кода, для поразрядной сортировки...

Вывод двух символьных массивов, завершающий символ
Товарищи! Помогите разобраться.... Вот простейшая программа: int main() {...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru