Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2013, 01:00   #1
Павел_95
Пользователь
 
Регистрация: 04.11.2012
Сообщений: 22
Смущение Создание динамического массива

Всем привет, кто читает эту тему. Есть программа, которая динамически создает массив из символов. А делается это так: создается динамический массив определенной(большой, что бы точно влезло) длинны. После создается еще 1 динамич.(2-ой) массив, который уже рассчитан на конкретное количество символов, что бы не использовать лишнее и с 1-ого массива введенные данные передаются во 2-ой массив(для этого я чучуть переделал функцию strcpy() ), после чего он будет использоваться, а 1-ый удалится. По виду... по виду... прога все копирует и делает все нормально, без каких либо ошибок(по крайней мере не выдает), но когда я вывожу то, что скопировал во 2-ой массив то выдает мусор, а не то,что я вводил.
Пожалуйста, укажите мне на мою ошибку или предложите какой-то альтернативный вариант решения этой проблемы. Буду очень признателен.
Влаживаю код самого тела программы и функции (моей версии)
strcpy_my
( char *s, char *t, int count) //s,t-как и в стандартной функции, а count - в виде счетчика ячеек массива, то есть я указываю сколько ячеек я хочу передать с 1-ого массива во 2-ой, начиная с начала.
Вот код:
Код:
int c;
					char *text_1 = new char[100000]; 
					
					while((c=getchar()) != EOF)
					{text_1[++count_simbol] = c;}
					++count_simbol = '\0';
					char *text = new char[++count_simbol];
					
					strcpy_my(text, text_1, count_simbol);
					
					cout<<"Poluchaem: "<<text<<endl;
					getchar(); //оставил просто так,что бы видеть результат.
			delete []text; //удалять буду только 1. Это как тест
			delete []text_1;
Функция:
Код:
void strcpy_my(char *s, char *t, int count)
{
for(int i = 0; i < count; i++)
			*s = *t;
}
Ну, вроде все сказал, может и много лишнего, но, хочу, что бы Вы четко поняли мою проблему. Жду Ваших ответов, заранее спасибо.
Павел_95 вне форума Ответить с цитированием
Старый 09.01.2013, 04:34   #2
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

strcpy у вас переносит из одного массива о второй , так? Но в цикле вы пишете * s = * t . у вас указатель не изменяется никак. Т.Е вы в цикле count раз присваиваете одно значение другому. Запишите так: s[i] = t[i] или так тоже можно: *(s + i) = *(t + i). Это все, что углядел пока.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 09.01.2013, 18:29   #3
Vacsus
 
Регистрация: 07.01.2013
Сообщений: 5
По умолчанию

Код:
{text_1[++count_simbol] = c;}
++count_simbol = '\0';
count_symbol - переменная какого типа? Я так понимаю int. Но тогда что означает строка ++count_simbol = '\0';?
Вместо нее нужно написать text_1[++count_simbol] = '\0'.
Vacsus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Visual: создание динамического массива для индексов Blondy Помощь студентам 3 29.04.2012 10:21
Содержание динамического массива Bish Microsoft Office Excel 6 18.05.2010 15:45
очистка динамического массива BattleMage Общие вопросы C/C++ 1 19.09.2009 09:03
Создание Динамического массива используя функции и файлы (С++)(HELP) Myau Thai Помощь студентам 2 24.05.2009 18:08
Создание н-мерного динамического массива Парсифаль Общие вопросы C/C++ 33 02.05.2009 18:29