Форум программистов, компьютерный форум CyberForum.ru

Проверка содержимого char[] - C++

Восстановить пароль Регистрация
 
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
30.08.2013, 12:15     Проверка содержимого char[] #1
Добрый день.
Написал чат по сети. В переменную char buf[1024] записываются приходящие сообщения следующим образом
C++
1
recv(client_sockfd, buf, 1024, 0);
затем я могу выводить их на экран
C++
1
printf("%s\n", buf);
.
Возникла необходимость сделать условие на содержимое переменной buf. Т.е. нечто такое
C++
1
 if (buf == 'f') printf("Hello\n");
подскажите пожалуйста, как проверить переменную buf, пришла ли только одна буква f ?
Спасибо за помощь!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
30.08.2013, 12:17     Проверка содержимого char[] #2
C++
1
if (buf[0] == 'f') printf("Hello\n");
Martovskij
98 / 38 / 7
Регистрация: 30.01.2011
Сообщений: 129
Завершенные тесты: 4
30.08.2013, 12:30     Проверка содержимого char[] #3
C++
1
2
3
4
5
6
7
8
9
for(int i = 0; i < bufLen; i++)
{
  if(buf[i]=='f')
  {
      printf("hi,jack\n");
      break;
  }
 
}
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
30.08.2013, 12:38  [ТС]     Проверка содержимого char[] #4
проблема решена
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
30.08.2013, 12:41     Проверка содержимого char[] #5
Костяныч, проблема-то решена.... вот только правильно ли решена?

У тебя какой транспортный протокол используется для обмена сообщениями? Подозреваю, что TCP, так?
AlexCore
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 26
30.08.2013, 12:58     Проверка содержимого char[] #6
Разве сначала не лучше получать размер строки(buf`), и по этому размеру уже смотреть, какая длина? или я не правильно понял вопрос...или Вам просто подсчет элементов нужно сделать, встречается ли он еще?
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
30.08.2013, 13:04  [ТС]     Проверка содержимого char[] #7
TCP
Martovskij
98 / 38 / 7
Регистрация: 30.01.2011
Сообщений: 129
Завершенные тесты: 4
30.08.2013, 13:05     Проверка содержимого char[] #8
не лучше. в буфере может быть две строки. или три строки
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
30.08.2013, 13:06  [ТС]     Проверка содержимого char[] #9
Цитата Сообщение от AlexCore Посмотреть сообщение
Разве сначала не лучше получать размер строки(buf`), и по этому размеру уже смотреть, какая длина? или я не правильно понял вопрос...или Вам просто подсчет элементов нужно сделать, встречается ли он еще?
Если пришла просто буква f, то выполнить условие, иначе ('ff' или 'fg...' или 'dfsd f df' или 'sfg' не важно) ничего
AlexCore
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 26
30.08.2013, 13:29     Проверка содержимого char[] #10
Цитата Сообщение от Martovskij Посмотреть сообщение
не лучше. в буфере может быть две строки. или три строки
Переменная char buf[1024], не понимаю, что значит две или три строчки, перед каждой посылкой (перед каждой строчкой) мы будем указывать ее размер...извините если Вам не понял(

Добавлено через 7 минут
Цитата Сообщение от Костяныч Посмотреть сообщение
Если пришла просто буква f, то выполнить условие, иначе ('ff' или 'fg...' или 'dfsd f df' или 'sfg' не важно) ничего
Ну тогда как то так, если не так, надеюсь, меня поправят.

C++
1
2
3
4
5
6
7
8
9
10
11
12
int count = 0;
if(buf[0] == 'f'){
    ++count;
 
    for(size_t i = 1;i < size && count < 2; ++i)
        if(buf[i] == 'f')
            ++count;
 
    if(count == 1){
        //действие
    }
}
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
30.08.2013, 13:35     Проверка содержимого char[] #11
О-ля-ля! Ну, раз в ходу TCP......
Костяныч, а учел ли ты, что TCP ничего не знает ни о "сообщениях", ни о "строках"? Грубо говоря, если на передающем конце в TCP сокет запихивать строки:
В лесу родилась елочка,
В лесу она росла,
Зимой и летом стройная
Зеленая была.

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

?
Martovskij
98 / 38 / 7
Регистрация: 30.01.2011
Сообщений: 129
Завершенные тесты: 4
30.08.2013, 13:42     Проверка содержимого char[] #12
Цитата Сообщение от CheshireCat Посмотреть сообщение
О-ля-ля! Ну, раз в ходу TCP......
Костяныч, а учел ли ты, что TCP ничего не знает ни о "сообщениях", ни о "строках"? Грубо говоря, если на передающем конце в TCP сокет запихивать строки:
В лесу родилась елочка,
В лесу она росла,
Зимой и летом стройная
Зеленая была.

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

?
AlexCore, поняли?
Еще от себя добавлю, что если ТС не встречал такого, то это не значит, что такой проблемы не существует.
Причины могут быть разные, например буфер передачи больше, чем TCP MTU.
Эх... как же хорошо на java или c#, натравил BufferedReader и BufferedWriter на сокет и радуешься
AlexCore
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 26
30.08.2013, 14:42     Проверка содержимого char[] #13
Цитата Сообщение от Martovskij Посмотреть сообщение
AlexCore, поняли?
Теперь понял, спасибо. Оказывается они могут слипнуться или наоборот...ну тогда нужно к какому то формату приводить, упаковывать. Что-то типа pickle на Python`e, на плюсах ничего такого не знаю(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2013, 16:06     Проверка содержимого char[]
Еще ссылки по теме:

Проверка ошибок в кодах. (Строки и char) C++
проверка содержимого текстового файла C++
C++ Проверка содержимого string/TextBox

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

Или воспользуйтесь поиском по форуму:
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
30.08.2013, 16:06  [ТС]     Проверка содержимого char[] #14
Мужики, сервер, написанный на С++ (стоит на linux) принимает сообщения, мне нудно проверять всего одну букву, и ничего более. Клиентская часть написана на C#. Клиент может посылать только f, b,r, l и s. Думаю путаницы в этом не возникнет если читать так : buf[0];
Потом буду слова проверять, но это потом...
Yandex
Объявления
30.08.2013, 16:06     Проверка содержимого char[]
Ответ Создать тему
Опции темы

Текущее время: 02:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru