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

Очистить переменную типа char * - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 32, средняя оценка - 4.84
mappy89
2 / 2 / 0
Регистрация: 16.10.2011
Сообщений: 178
19.07.2012, 11:45     Очистить переменную типа char * #1
Привет. Тупит код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char *rt;
int port=4;
 
rt="COM";
char temp1[10]; //временная перем.
 
strcat(rt,itoa(port,temp1,10));
 
if (SetupUart(rt,9600,8,1,NOPARITY))
{Label1->Caption=rt; Button1->Enabled=false;}
 
memset(temp1,0,sizeof(temp1));
 
Label1->Caption=rt;
После пары раз прогона кода вместо "COM4" начинается добавление "4" вконец строки. Как очистить переменную *rt?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2012, 11:45     Очистить переменную типа char *
Посмотрите здесь:

Как сделать переменную типа char именем файла C++
C++ Как сравнить переменную типа char
C++ Не могу обнулить переменную типа char
Сложение массива типа char в одну переменную C++
C++ Как вернуть переменную типа char * из функции
C++ НЕ записывается содержимое файла в переменную типа char
C++ Считать файл в переменную типа char, и работать посимвольно
C++ Вывести с помощью printf переменную типа char*

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
19.07.2012, 12:08     Очистить переменную типа char * #2
mappy89, выражение

Цитата Сообщение от mappy89 Посмотреть сообщение
rt="COM";
присваивает rt адрес строки "COM", которая является константой.

Далее

Цитата Сообщение от mappy89 Посмотреть сообщение
strcat(rt,itoa(port,temp1,10));
strcat пишет в эту константу. Так нельзя. Создайте отдельный массив char, причём с тем размером, чтобы туда т очно поместилась ожидаемая результирующая строка, в нём и кувыркайтесь. А константы не трогайте, они вам ничего не сделали :-)

Кроме того, это похоже на билдеровский код. В vcl, если мне не изменяет склероз, есть такая замечательная штука, как IntToString. Поищите в хелпе.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.07.2012, 12:14     Очистить переменную типа char * #3
Цитата Сообщение от mappy89 Посмотреть сообщение
Как очистить переменную *rt?
Вам надо очистить переменную temp1:
C
1
*temp1 = '\0';
А c rt все проще. Пишите rt = "...", каждый раз rt будет иметь адрес соответствующей константы из области памяти read-only
Yandex
Объявления
19.07.2012, 12:14     Очистить переменную типа char *
Ответ Создать тему
Опции темы

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