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

Строки (добавляет какие-то непонятные символы) - C++

Восстановить пароль Регистрация
 
mr. Spock
 Аватар для mr. Spock
20 / 20 / 12
Регистрация: 01.01.2011
Сообщений: 198
09.01.2014, 21:44     Строки (добавляет какие-то непонятные символы) #1
Есть функция, которая возвращает строку.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char *create_string(int Q1, int Q2, int Q3, int S1, int S2, int S3, float T)
{
int Q[3];
int S[3];
Q[0]=Q1; Q[1]=Q2; Q[2]=Q3;
S[0]=S1; S[1]=S2; S[2]=S3;
char *f=new char[50];
for (int i=0;i<3;i++)
{
strcat(f,"#");
strcat(f,to_char(S[i]));
strcat(f,"P");
strcat(f,to_char(Q[i]));
}
strcat(f,"T");
strcat(f,to_char(T));
strcat(f,"\n\r");
return f;
}
Все в порядке, только в начале результирющей строки она добавляет какие-то непонятные символы. В результате получается строка вида
8³»r#24P1668#25P1709#26P2121T2
а должна быть такая:
#24P1668#25P1709#26P2121T2

Что я делаю не так?
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2014, 21:44     Строки (добавляет какие-то непонятные символы)
Посмотрите здесь:

Непонятные символы.(Строки и указатели). C++
На выходе выдаются непонятные символы C++
C++ непонятные символы в строке char
непонятные символы. как убрать? C++
Непонятные символы в консоли C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 982
Регистрация: 02.05.2013
Сообщений: 10,298
Завершенные тесты: 1
09.01.2014, 21:49     Строки (добавляет какие-то непонятные символы) #2
В буфере f находится "мусор". Когда первый раз вызывается strcat, он
прибавляет строку к этому мусору.
mr. Spock
 Аватар для mr. Spock
20 / 20 / 12
Регистрация: 01.01.2011
Сообщений: 198
09.01.2014, 21:55  [ТС]     Строки (добавляет какие-то непонятные символы) #3
Цитата Сообщение от Убежденный Посмотреть сообщение
В буфере f находится "мусор". Когда первый раз вызывается strcat, он
прибавляет строку к этому мусору.
когда я делаю так, то сразу выбивает

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
char *create_string(int Q1, int Q2, int Q3, int S1, int S2, int S3, float T)
{
int Q[3];
int S[3];
Q[0]=Q1; Q[1]=Q2; Q[2]=Q3;
S[0]=S1; S[1]=S2; S[2]=S3;
char *f=new char[50];
f=NULL;
for (int i=0;i<3;i++)
{
strcat(f,"#");
strcat(f,to_char(S[i]));
strcat(f,"P");
strcat(f,to_char(Q[i]));
}
strcat(f,"T");
strcat(f,to_char(T));
strcat(f,"\n\r");
return f;
}
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
09.01.2014, 21:57     Строки (добавляет какие-то непонятные символы) #4
mr. Spock, не
C++
1
f=NULL;
а
C++
1
*f = 0;
или
вместо
C++
1
strcat(f,"#");
написать
C++
1
strcpy(f,"#");
P.S. с strcpy() погорячился. Не заметил сразу, что это в цикле.
Поэтому еще могу предложить вариант написать до цикла такое:
C++
1
strcpy(f,"");
mr. Spock
 Аватар для mr. Spock
20 / 20 / 12
Регистрация: 01.01.2011
Сообщений: 198
09.01.2014, 22:08  [ТС]     Строки (добавляет какие-то непонятные символы) #5
все, идеально.
спасибо)))
Yandex
Объявления
09.01.2014, 22:08     Строки (добавляет какие-то непонятные символы)
Ответ Создать тему

Метки
с++, Строки
Опции темы

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