Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Очистка символьного массива + Подобные программные фишки С++

51K
11 января 2010 года
Dr.CODE
18 / / 10.11.2009
Всем привет! Конкретный ответ найти не смог, поэтому создал тему.

Вопрос:
Как после заполнения символьного массива(указателя!) в цикле, при некоторых условиях его очищать и опять в этом же цикле заполнять? Т.е. производить эту операцию многократно?
46K
11 января 2010 года
netlana
16 / / 14.03.2009
Сделайте цикл while (с постусловием, например), а в теле цикла вызывайте методы заполнения и очистки массива.
51K
11 января 2010 года
Dr.CODE
18 / / 10.11.2009
netlana, смотри, вот я как пытаюсь сделать:
Выделяю память под указатель на символьный массив, заполняю и мне нужно потом его очистить, т.е. если в цикле заполненный массив - mas содержит часть строки - "Ва" + символ нуля в конце. Его, по идее, можно поэлементно в цикле затереть присвоением последовательно текущему элементу значения следующего.

В связи с этим я хочу узнать - можно-ли очистить массив каким-нибудь иным способом не трогая последний нуль? Если есть какие-то функции самостоятельно затирающие символьный массив, то подскажите пожалуйста!
1.9K
12 января 2010 года
GreenRiver
451 / / 20.07.2008
Цитата: Dr.CODE

Выделяю память под указатель на символьный массив, заполняю и мне нужно потом его очистить, т.е. если в цикле заполненный массив - mas содержит часть строки - "Ва" + символ нуля в конце. Его, по идее, можно поэлементно в цикле затереть присвоением последовательно текущему элементу значения следующего.


Признавайтесь, что курите )

Цитата: Dr.CODE

В связи с этим я хочу узнать - можно-ли очистить массив каким-нибудь иным способом не трогая последний нуль? Если есть какие-то функции самостоятельно затирающие символьный массив, то подскажите пожалуйста!


Ничего не понял про последний ноль, но поможет вам memset

288
12 января 2010 года
nikitozz
1.2K / / 09.03.2007
Цитата: Dr.CODE

Выделяю память под указатель на символьный массив,



Вы выделяете память под указатель или для массива? Это разные вещи.

Цитата: Dr.CODE

заполняю и мне нужно потом его очистить, т.е. если в цикле заполненный массив - mas содержит часть строки - "Ва" + символ нуля в конце. Его, по идее, можно поэлементно в цикле затереть присвоением последовательно текущему элементу значения следующего.



Это вы где так научились массивы обнулять? :) Да и не обнуление это.

307
12 января 2010 года
Artem_3A
863 / / 11.04.2008
как бы обнуление вот:
 
Код:
for(int i(0); i<(MAS_SIZE-1); i++)
    massive = "";//(или 0, или еще чего захочешь)
massive[MAS_SIZE-1] = "/0";


и собственно где тут вообще так называемые "программые фишки"? все банально до не могу.

К тому же зачем вообще очищать? если ты его будешь повторно заполнять, то просто затрешь предыдущую запись.
51K
12 января 2010 года
Dr.CODE
18 / / 10.11.2009
Цитата:
Признавайтесь, что курите )


Нет, мало сплю ))

Цитата:
Вы выделяете память под указатель или для массива? Это разные вещи.


Выделяю память под указатель на символьный массив. Указатель на символьный массив - это единая фраза! Не понял что вас смутило..

Цитата:
Это вы где так научились массивы обнулять? Да и не обнуление это.


Вот очистка о которой я говорил:

Код:
while (kol_symbol_in_slog != 0)
{
// Очистка символьного массива - Main_Render_2 для записи новых значений

         for (k = 0; k < kol_symbol_in_slog; k++) {

          Main_Render_2[k] = Main_Render_2[k+1];

         }

        kol_symbol_in_slog--;

// Очистка символьного массива - Main_Render_2 для записи новых значений
}

А я спрашиваю о том, есть ли в С++ функция, которая производит такое же действие? Про зануление я и правда ошибся! Извиняюсь! ))
288
13 января 2010 года
nikitozz
1.2K / / 09.03.2007
Цитата: Dr.CODE

Вот очистка о которой я говорил:
Код:
while (kol_symbol_in_slog != 0)
{
// Очистка символьного массива - Main_Render_2 для записи новых значений

         for (k = 0; k < kol_symbol_in_slog; k++) {

          Main_Render_2[k] = Main_Render_2[k+1];

         }

        kol_symbol_in_slog--;

// Очистка символьного массива - Main_Render_2 для записи новых значений
}



До этого кода сами додумались? :D Ответ в теме уже был. memset вас спасет.

36K
17 января 2010 года
sstorm
55 / / 25.03.2009
Ваш код многократно затирая одно и то же, сделает все символы буфера равными последнему. (ну, это если я правильно понял). То же, только оптимальнее, можно, как уже выше говорили, сделать так:

#include <memory.h>

memset(Main_Render_2,Main_Render_2[kol_symbol_in_slog-1],kol_symbol_in_slog);
51K
17 января 2010 года
Dr.CODE
18 / / 10.11.2009
sstorm, ты всё верно понял! Спасибо за практический пример использования функции! =)

Цитата:
До этого кода сами додумались?


nikitozz, я даже не додумывался, а просто этот код во сне увидел! =)

307
18 января 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: Dr.CODE

nikitozz, я даже не додумывался, а просто этот код во сне увидел! =)



Менделеев нервно курит в сторонке!

9
18 января 2010 года
Lerkin
3.0K / / 25.03.2003
Цитата: Dr.CODE
Нет, мало сплю ))



Цитата: Dr.CODE
nikitozz, я даже не додумывался, а просто этот код во сне увидел! =)



На лицо - взамоисключение. Чтоб мне так мало спать...

16K
03 февраля 2010 года
asmforce
186 / / 05.01.2010
Если вы хотите, чтобы теперь стока "не содержала символов" - достаточно написать:
your_str[0] = 0;

И не париться с обнулением! А ноль в конце останется на своём месте!

Я бы Вам посоветовал сначала пройти полный курс С++ по Дейтелу!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог