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

Неправильный результат char - C++

Восстановить пароль Регистрация
 
updaite
14 / 14 / 2
Регистрация: 14.01.2013
Сообщений: 384
Записей в блоге: 2
22.04.2014, 13:22     Неправильный результат char #1
Здраствуйте, есть клиент сервер.
От клиента идет строка LOGIN_PASS:555|555 сервер принимает и пишет в char buf[1024], мне нужно ее обрезать до символа :, получается команда LOGIN_PASS: все команды одинаковой длины 11 символов.
Поэтому делаю так
C++
1
2
 char Comannd[10];
strncpy(Comannd,buf,10);
Результат на снимки, как видим есть лишние символы непонятного происхождения, я думал сначало выхожу за пределы массива, но нет, я крутил приделы не чего из этого не вышло.
Ещё делал так
C++
1
2
for(int i = 0; i != 10; i++)
Comannd[i] = buf[i];
Результат тот же.
[]http://pixs.ru/showimage/Snimokekra_4152853_11800296.png[/]

Как исправить?

Я работаю в linux компилятор g++.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
22.04.2014, 13:33     Неправильный результат char #2
updaite, Если у тебя в массиве 10 символов, то их только 10 и не больше.
На экран ты видимо выводишь строку. А строка это последовательность символов, заканчивающаяся нулем. Вот тебе программа и выводит все что найдет в памяти, пока не дойдет до нуля.
Если хочешь что бы выводилось правильно, то выдели не 10, а 11 символов и Comannd[10]='\0'
updaite
14 / 14 / 2
Регистрация: 14.01.2013
Сообщений: 384
Записей в блоге: 2
22.04.2014, 13:34  [ТС]     Неправильный результат char #3
Если кто может выложите рабочий код обрезание строки циклом.
LOGIN_PASS:555|555 -> LOGIN_PASS:

Я проверю его у себя.
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
22.04.2014, 13:39     Неправильный результат char #4
И циклы типа
C
1
for(int i = 0; i != 10; i++)
лучше не использовать
Писать лучше так:
C
1
for(int i = 0; i <10; i++)
Добавлено через 1 минуту
Да, еще char buf[1024] это не строка, а массив символов. Почему, я писал выше.
updaite
14 / 14 / 2
Регистрация: 14.01.2013
Сообщений: 384
Записей в блоге: 2
22.04.2014, 13:41  [ТС]     Неправильный результат char #5
Comannd[10]='\0' - это куда? Выложите пример пожалуйста для наглядности.
Aloir
 Аватар для Aloir
216 / 216 / 13
Регистрация: 17.12.2010
Сообщений: 688
22.04.2014, 13:42     Неправильный результат char #6
C++
1
2
3
4
5
char *str = "LOGIN_PASS:555|555";
    char buff[11]={0}; // <- не забывайте инициализировать массивы чаровские
    strncpy(buff,str,10);
    buff[10]=0;
    //на выходе LOGIN_PASS
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
22.04.2014, 13:42     Неправильный результат char #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C
1
2
3
char Comannd[11];
for(int i = 0; i <10; i++) Comannd[i] = buf[i];
Comannd[10]='\0';
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 13:44     Неправильный результат char
Еще ссылки по теме:

C++ Программа для подсчета калорий выдает неправильный результат
C++ Почему в выходной файл выводит неправильный результат?
C++ Найти максимальный элемент массива: неправильный результат, почему?

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

Или воспользуйтесь поиском по форуму:
updaite
14 / 14 / 2
Регистрация: 14.01.2013
Сообщений: 384
Записей в блоге: 2
22.04.2014, 13:44  [ТС]     Неправильный результат char #8
solar_wind, Aloir, Спасибо, фурычит.
Yandex
Объявления
22.04.2014, 13:44     Неправильный результат char
Ответ Создать тему
Опции темы

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