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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2008, 20:47   #1
Stellvertreter
Пользователь
 
Регистрация: 12.10.2008
Сообщений: 12
По умолчанию Ошибка cannot convert from 'char *' to 'char [100]'

Такая проблема
Написал функцию для удаления пробелов в строке
Код:
char* probel(const char* str, const int n){		
                char str2[100];
		..............
		return str2;
	}
потом использую ее в программе
Код:
        char s[100];
	gets(s);
	char s2[100];
	s2 = probel(s,strlen(s));
Выдается ошибка
cannot convert from 'char *' to 'char [100]'

То есть, получается, что из char [100] в char* он перевел, а обратно не хочет.
Как быть?

Последний раз редактировалось rpy3uH; 12.10.2008 в 22:14.
Stellvertreter вне форума Ответить с цитированием
Старый 12.10.2008, 22:18   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

надо примерно вот так
Код:
char* probel(const char* str, const int n){		
                char* str2;
                str2 = new char[100];
		..............
		return str2;
	}
Код:
           char s[100];
	gets(s);
	char* s2;
	s2 = probel(s,strlen(s));
rpy3uH вне форума Ответить с цитированием
Старый 12.10.2008, 22:33   #3
Stellvertreter
Пользователь
 
Регистрация: 12.10.2008
Сообщений: 12
По умолчанию

Спасибо, заработало!
А можете объяснить, что принципиального изменилось?
char str2[100]; - это описывается указатель на первый элемент типа чар из последовательности, в которой 100 элементов, при этом выделяется память.

Разве эти записи не равнозначны?
char* str2;
str2 = new char[100];
Stellvertreter вне форума Ответить с цитированием
Старый 12.10.2008, 22:47   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

в первом варианте массив str2 находится в стеке и функция probel возвращает указатель на массив в стеке, после вызова функции со стеком может неизвестно что произойти. Но это не главное, главное
Код:
           char* s2;
	s2 = probel(s,strlen(s));
мы объявляем указатель на char, а не массив!
вариант
Код:
           char s2[100];
	s2 = probel(s,strlen(s));
не имеет смысла вообще
rpy3uH вне форума Ответить с цитированием
Старый 29.05.2010, 22:36   #5
Гончий
Пользователь
 
Регистрация: 29.05.2010
Сообщений: 21
По умолчанию

Помогите разобраться, С++ только начал изучать

Пишу длл. В нем две функции - сравнения и сортировки. Смысл такой: функции сортировки передается массив строк, потом две строки передаются функции сравнения

Ошибка: "cannot convert parametr 1 from char to chat[]"

Заголовки функций такие:
void WINAPI Srav(char s1[], const char s2[], bool OneMore)

void WINAPI Sort(char iArray[], const int Mas_4isla_Razmer, bool Vector)

s1 и s2 - строки, iArray - массив строк. Я новичок, так что нюансов по типам вообще не знаю. Как исправить?
Гончий вне форума Ответить с цитированием
Старый 30.05.2010, 00:02   #6
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
в первом варианте массив str2 находится в стеке и функция probel возвращает указатель на массив в стеке, после вызова функции со стеком может неизвестно что произойти.
на самом деле известно, str2 разрушиться
подпись
liljon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
char в wchar_t softrix Общие вопросы C/C++ 5 08.11.2010 15:40
из AnsiString в Char[] juden Общие вопросы C/C++ 6 20.05.2008 22:49
из string в char ShenDy Общие вопросы C/C++ 1 14.04.2008 11:01
Есть таблица - В ней три поля int, char, char нужно чтобы данные заносились в таблицу Mysql Muahahaha PHP 8 27.03.2008 11:17
char->string eds Общие вопросы .NET 1 28.11.2007 17:22