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

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

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

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

01.12.2013, 00:28. Просмотров 251. Ответов 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; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2013, 00:28     после цикла while символьный массив обнуляется?
Посмотрите здесь:

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

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

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

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

Заполнить символьный массив в классе - C++
Почему не могу присвоить значение в 1 поле, только символьное, целочисленное проходит нормально... #include &lt;iostream&gt; using...

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

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

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

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

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

А какая разница, если все равно переводится в код? Думаю, что так, что эдак, рез-тат одинаков.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2013, 02:25     после цикла while символьный массив обнуляется?
Еще ссылки по теме:

Запись текста в символьный массив - C++
Доброго времени суток :) Есть переменная которой я хочу присвоить HTML код но в этом HTML коде есть переменная в которою в зависимости от...

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

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

Символьный массив. Очень легко. - C++
Написать программу, функция которой получит в качестве параметра символьный массив, после чего удалит из него два символа стоящих рядом,...


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

Или воспользуйтесь поиском по форуму:
caiman
11 / 11 / 1
Регистрация: 17.11.2013
Сообщений: 39
01.12.2013, 02:25     после цикла while символьный массив обнуляется? #9
Так легче понимать, что происходит в коде. Машине все равно, но код-то люди читают.
Yandex
Объявления
01.12.2013, 02:25     после цикла while символьный массив обнуляется?
Ответ Создать тему
Опции темы

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