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

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

Войти
Регистрация
Восстановить пароль
 
h8er
15 / 15 / 5
Регистрация: 20.11.2013
Сообщений: 92
#1

после цикла while символьный массив обнуляется? - C++

01.12.2013, 00:28. Просмотров 271. Ответов 8
Метки нет (Все метки)

Собственно сабж. Подскажите, в чем проблема
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int RemoveChar(char *_str, int _strt, int _amt)
{
    int i = 0;
#ifdef CHECKING 
    while(*_str++) i++;      <- После цикла массив пустой
    if(i < _amt) return -1;
#endif
 
    for(i = 0; i < _amt; i++, _strt++)
    {
          *(_str + _strt) = 32;
          }
    return 0; 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2013, 00:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос после цикла while символьный массив обнуляется? (C++):

Массив обнуляется и превращается в мусор - C++
Мои познания в языке не столь велики, но задание делать нужно :( Очень много искал решение проблеы, но так и не смог. Проблема в том,...

Символьный массив: проверить, чтобы после каждого вхождения "1" шло парное вхождение "0" - C++
Доброго времени суток. Есть программа, которая реализует данную задачу: Проверить что б после каждого вхождения &quot;1&quot; шло парное...

Чем отличаются двумерный символьный массив и массив указателей на строки - C++
Двумерный символьный массив и массив указателей на строки. Собственно чем они отличаются? Заранее спасибо.

32-разрядный символьный массив - C++
Как представить в виде 32 разрядного символьного Массива целое число?O_o

Литерный, символьный массив - C++
1)Объявить строку ng3 как литерный массив, не указав длину строки, и инициализировать ее значением “HTML++Java”. 2)Объявить массив er из...

Массив указателей на символьный массив - C++
Программа пишет название месяца, после ввода переменной &quot;y&quot;. #include &lt;stdio.h&gt; #include &lt;iostream.h&gt; char* int2month(int nMonth); ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
01.12.2013, 01:47 #2
А какая роль данного цикла?
0
caiman
11 / 11 / 1
Регистрация: 17.11.2013
Сообщений: 39
01.12.2013, 01:55 #3
На сколько я могу понимать, Вы этим циклом пытаетесь посчитать количество символов в строке?
0
h8er
15 / 15 / 5
Регистрация: 20.11.2013
Сообщений: 92
01.12.2013, 02:06  [ТС] #4
Цитата Сообщение от caiman Посмотреть сообщение
На сколько я могу понимать, Вы этим циклом пытаетесь посчитать количество символов в строке?
Ну да, пока while не встретит нуль, i приращивается. Но почему то с каждым проходом строка уменьшается на один символ. Т.е если была строка SOMETHINK, то с каждым проходом OMETHINK, METHINK ETHINK и так до конца. Разве инкремент++ присваивает значение в строку?
0
caiman
11 / 11 / 1
Регистрация: 17.11.2013
Сообщений: 39
01.12.2013, 02:10 #5
C++
1
for( ;_str[i] != 0; i++)
1
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
01.12.2013, 02:12 #6
Инкримент изменяет значение самой строки. Функция для получения длянный строки с учетом нуля
C++
1
i=strlen(_str)-1;
1
caiman
11 / 11 / 1
Регистрация: 17.11.2013
Сообщений: 39
01.12.2013, 02:16 #7
Зачем там #ifdef CHECKING?
И объявлен ли где-то этот макрос?

Добавлено через 2 минуты
+ если Вы заменяете значение символов на пробел, может стоит делать это явно?
Например:
C++
1
*(_str + _strt) = ' ';
0
h8er
15 / 15 / 5
Регистрация: 20.11.2013
Сообщений: 92
01.12.2013, 02:21  [ТС] #8
Да, действительно, инкремент изменяет саму строку. Заменил на *(_str + i) все заработало. Спасибо!

Добавлено через 2 минуты
Цитата Сообщение от caiman Посмотреть сообщение
Зачем там #ifdef CHECKING?
И объявлен ли где-то этот макрос?

Добавлено через 2 минуты
+ если Вы заменяете значение символов на пробел, может стоит делать это явно?
Например:
C++
1
*(_str + _strt) = ' ';
Да, макрос был не объявлен, когда цикл не работал, в общем там все в порядке.

А какая разница, если все равно переводится в код? Думаю, что так, что эдак, рез-тат одинаков.
0
caiman
11 / 11 / 1
Регистрация: 17.11.2013
Сообщений: 39
01.12.2013, 02:25 #9
Так легче понимать, что происходит в коде. Машине все равно, но код-то люди читают.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2013, 02:25
Привет! Вот еще темы с ответами:

Разделить символьный массив на лексемы - C++
Нужно разделить символьный массив на лексемы. Новая лексема - от и до мат. знака (&quot;+&quot;, &quot;-&quot;, &quot;*&quot;,...

Символьный массив и указатель на char - C++
Читал уже где-то на форуме тему, где показывалась разница между:char mas=&quot;Hello&quot;; char * ptr=&quot;World&quot;; Но из всего я понял только то, что...

Символьный массив, считываемый из файла - C++
Из текстового файла считывается массив символов. Нужно считать из файла только те символы, которые являются буквами латинского алфавита. ...

Считывание строки в символьный массив - C++
1. Ввод из коммандной строки, число символов неизвестно. 2. Ввод из текстового файла, число символов неизвестно. Например, int...


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

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

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