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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
updaite
14 / 14 / 2
Регистрация: 14.01.2013
Сообщений: 399
Записей в блоге: 2
#1

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

22.04.2014, 13:22. Просмотров 267. Ответов 7
Метки нет (Все метки)

Здраствуйте, есть клиент сервер.
От клиента идет строка 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++.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2014, 13:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Неправильный результат char (C++):

Неправильный результат - C++
где тут ошибка #include<conio.h> #include<iostream.h> #include<math.h> #include<iomanip.h> double Y (double); int main() ...

Неправильный результат - C++
1)В результате выдаёт -1.#J. Как это исправить? 2)Подскажите пожалуйста как задавать число пи, мне нужно присвоить его переменной pi. ...

Неправильный вывод в строке типа char - C++
char * word = new char ; for (int i = 0; i < 5 - 1; i++) word = 'a'; cout << word << endl; почему кроме 4-х а выводится еще...

Ветвления. Дает неправильный результат - C++
Не все значения сравнивает правильно, в итоге - неправильный результат Например: Ввожу a=11 b=10 ответ: -140 Почему так?...

Неправильный результат выполнения программы - C++
программа должна считать формулу-в результате в ответе всегда 0.Формула |x|-|y|/|x*y|+1 #include <iostream> #include <conio.h> ...

Произведение четных чисел до n (неправильный результат) - C++
Здравствуйте. Мне по заданию надо написать программу,считающую произведение четных чисел до числа n. В чем ошибка моей программы? просто...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
solar_wind
756 / 747 / 42
Регистрация: 06.07.2009
Сообщений: 2,969
Завершенные тесты: 1
22.04.2014, 13:33 #2
updaite, Если у тебя в массиве 10 символов, то их только 10 и не больше.
На экран ты видимо выводишь строку. А строка это последовательность символов, заканчивающаяся нулем. Вот тебе программа и выводит все что найдет в памяти, пока не дойдет до нуля.
Если хочешь что бы выводилось правильно, то выдели не 10, а 11 символов и Comannd[10]='\0'
0
updaite
14 / 14 / 2
Регистрация: 14.01.2013
Сообщений: 399
Записей в блоге: 2
22.04.2014, 13:34  [ТС] #3
Если кто может выложите рабочий код обрезание строки циклом.
LOGIN_PASS:555|555 -> LOGIN_PASS:

Я проверю его у себя.
0
solar_wind
756 / 747 / 42
Регистрация: 06.07.2009
Сообщений: 2,969
Завершенные тесты: 1
22.04.2014, 13:39 #4
И циклы типа
C
1
for(int i = 0; i != 10; i++)
лучше не использовать
Писать лучше так:
C
1
for(int i = 0; i <10; i++)
Добавлено через 1 минуту
Да, еще char buf[1024] это не строка, а массив символов. Почему, я писал выше.
0
updaite
14 / 14 / 2
Регистрация: 14.01.2013
Сообщений: 399
Записей в блоге: 2
22.04.2014, 13:41  [ТС] #5
Comannd[10]='\0' - это куда? Выложите пример пожалуйста для наглядности.
0
Aloir
217 / 217 / 13
Регистрация: 17.12.2010
Сообщений: 689
22.04.2014, 13:42 #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
1
solar_wind
756 / 747 / 42
Регистрация: 06.07.2009
Сообщений: 2,969
Завершенные тесты: 1
22.04.2014, 13:42 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C
1
2
3
char Comannd[11];
for(int i = 0; i <10; i++) Comannd[i] = buf[i];
Comannd[10]='\0';
0
updaite
14 / 14 / 2
Регистрация: 14.01.2013
Сообщений: 399
Записей в блоге: 2
22.04.2014, 13:44  [ТС] #8
solar_wind, Aloir, Спасибо, фурычит.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 13:44
Привет! Вот еще темы с ответами:

Определить минимальное значение в массиве, неправильный результат - C++
помогите пожалуйста, cоздайте массив из 15 целочисленных элементов и определите среди них минимальное значение, вроде сделал все правильно...

Неправильный результат при возведении числа в степень - C++
#include&lt;stdio.h&gt; #include&lt;math.h&gt; main() { int n,a; scanf(&quot;%d&quot;,&amp;n); a=pow(2,n); printf(&quot;%d&quot;,a); ...

Почему в выходной файл выводит неправильный результат? - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;stdlib.h&gt; using namespace std; #pragma warning(disable: 4996) int main(){ ...

Алгоритм Флойда-Уоршелла (результат работы неправильный) - C++
Задание выглядит так: Дан ориентированный взвешенный граф. Найти пару вершин, кратчайшее расстояние от одной из которых до другой...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.04.2014, 13:44
Ответ Создать тему
Опции темы

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