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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2012, 22:47   #1
Кудаив
Пользователь
 
Регистрация: 19.04.2012
Сообщений: 57
По умолчанию указатели

Добрый день! пытаюсь разбираться с указателями
хочу скопировать слова из строки в С-стиле в символьный двумерный массив, не получается... помогите пожалуйста, заранее спасибо
Код:
void stringToArray(char* str){
	unsigned size=0;
	int i=0;
    int j=0;
	//int max_len;
//подсчёт пробелов в строке
	while(*str!=NULL){
		if(*str==' ') size++;
		str++;
	}
//динамическое создание двумерного массива
		char **words = new char*[size+1];
//каждый член которого одномерный массив 
	for(int i=0; i<size+1; i++){
		words[i] = new char[15*sizeof(char)];
	}
//копирование
	while(*str){
		while(*str!=' ')
              		**words++=*str++;
		words++;
		str++;
		}
//вывод для проверки копирования в массив
	for(int j=0; j<15; j++){
		for(int i=0; i<size+1; i++){
			cout<<words[i][j];
		}
	}

    
	for(int i=0; i<size+1; i++)
		delete words[i];
	delete[] words;
}
Кудаив вне форума Ответить с цитированием
Старый 04.06.2012, 11:04   #2
Яна696
Пользователь
 
Аватар для Яна696
 
Регистрация: 07.11.2011
Сообщений: 53
По умолчанию

Код:
for(int i=0; i<size+1; i++){
		*(words+i) = new char[15*sizeof(char)];
(words+i)-это смещение,
*(words+i)-операция разыменования.считываешь значение по этому адресу;
Код:
	for(int j=0; j<15; j++){
		for(int i=0; i<size+1; i++){
			cout<<words[i][j];
*(*(words+i)+j)-логика та же, если тебе надо обращение к эл-там массива ч/з схему указателей
А может я слегка обнаглела?...
Яна696 вне форума Ответить с цитированием
Старый 04.06.2012, 11:38   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
скопировать слова из строки в С-стиле
Зачем? Ты же в стиле плюсплюс пишешь? Смысл смешивать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2012, 18:56   #4
Кудаив
Пользователь
 
Регистрация: 19.04.2012
Сообщений: 57
По умолчанию

в конечном счёте всё будет на чистом С, С++ ные штуки для самопроверки,а new/delete в Сях тоже есть))

таки вот эта штука корректна? ничерта не работает зараза
как я понимаю...
Код:
	while(*str){//пока не конец строки
		while(*str!=' ')//пока не пробел
              		**words++=*str++;//из str копируется в char подмассив words  
		words++;//переход к следущему подмассиву
		str++;//переход на следущий символ строки
		}

Последний раз редактировалось Кудаив; 04.06.2012 в 19:03.
Кудаив вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели в С++ kdteam Помощь студентам 2 12.11.2010 20:13
указатели Solnze2 Общие вопросы C/C++ 1 21.10.2010 17:32
C++ УКАЗАТЕЛИ Scarletred Общие вопросы C/C++ 1 24.05.2010 01:56
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39