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

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

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

Восстановить пароль

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

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

Привет всем, кто читает эту тему. Недавно я создавал похожую тему, где описывал как я создавал 2 динамических массива и перебрасывал с 1-ого во второй данные с помощью слегка видоизмененной функции srtcpy(). У меня было несколько проблем, из-за которых у меня не работала сама программа.
Если в краце о программе: сначала я создаю здоровы дин. массив, в который должно все влезть. После того, как пользователь ввел свои данные я копирую данные с 1-ого(большого) массива в уже готовы массив с подстроением под то кол-во символов, которое требуется. Удаляю большой и дальше работаю со 2-ым.
Появилась другая проблема: все вроде работает и нормально выводит, но только латинскими буквами. То есть если я ввожу: "abc abc abc" - то и выводит "abc abc abc", а вот русские символы печально убивает..., то есть выводит мусор, похожий на английскую транскрипцию... В общем, думаю, проблема ясна... Мне подсказали что это может быть связано с тем, что передается во второй массив уже не Юникод, а что-то другое.
Надеюсь, вы поможете) Заранее благодарен за ответы.
Вот собственно код:
Код:
int c;
					char *text_1 = new char[SIZE_STRT];
					
					while((c=getchar()) != EOF)
					{text_1[++count_simbol] = c;}
					text_1[++count_simbol] = '\0';
					
					char *text = new char[++count_simbol];
					
					strcpy_my(text, text_1, count_simbol);
					
					cout<<"Poluchaem: "<<text<<endl;
					getchar();
					delete []text;
					delete []text_1;
А вот функция, которая копирует с массива в массив посимвольно:
Код:
void strcpy_my(char *s, char *t, int count)
{
for(int i = 0; i < count; i++)
			{
                          *s++ = *t++;	
			}
}
Павел_95 вне форума Ответить с цитированием
Старый 10.01.2013, 13:31   #2
Vacsus
 
Регистрация: 07.01.2013
Сообщений: 5
По умолчанию

Попробуй добавить заголовочный файл clocale и в начале программе используй функцию setlocale(LC_CTYPE, "Russian");
И да, почему ты создаешь массив text размера ++count_symbol? Еще раз зачем увеличивать счетчик?
Vacsus вне форума Ответить с цитированием
Старый 10.01.2013, 13:31   #3
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

setlocale()
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 10.01.2013, 13:45   #4
Павел_95
Пользователь
 
Регистрация: 04.11.2012
Сообщений: 22
По умолчанию

Нет, ребят это не setlocale(). Все равно выбивает мусор. До этого я использовал
setlocale(LC_ALL, "rus"); - все равно не помогает.
Тут в другом проблема,не могу понять в чем, счетчик увеличил на всякий пожарный так сказать... может там еще будет значение EOF в конце.
P.S. clocale - тоже не помог...
Павел_95 вне форума Ответить с цитированием
Старый 10.01.2013, 13:51   #5
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

setlocale(LC_ALL, "Russian");
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 10.01.2013, 14:14   #6
Павел_95
Пользователь
 
Регистрация: 04.11.2012
Сообщений: 22
По умолчанию

писал же, это не помогает... нужны другие варианты.
Павел_95 вне форума Ответить с цитированием
Старый 10.01.2013, 14:34   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
передается во второй массив уже не Юникод, а что-то другое
Передаётся не Юникод, факт. Передаётся однобайтовая кодировка. Выведите себе код первого символа (число) до копирования и после. Если не совпадут - проблема в копировании; если совпадут - копируется всё правильно и проблема в отображении.
В порядке бреда, шрифт Lucida Console в консоли поставьте.
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический массив Yakov112 Общие вопросы C/C++ 2 09.11.2012 20:51
Динамический массив С++ Alex_Dep Помощь студентам 1 19.01.2012 22:57
Динамический массив, массив указателей alexalisa Паскаль, Turbo Pascal, PascalABC.NET 4 22.04.2011 21:33
Динамический массив - или всё таки не динамический? vedro-compota Общие вопросы C/C++ 30 10.12.2010 23:22
Динамический массив vvv-091 Фриланс 4 01.06.2010 00:31