| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Параметр - указатель на строку |
| Автор: mrTeapoт 5.6.2007, 13:04 |
| Добрый день, господа сионисты. У меня ситуация,которую вы, наверное, сочтете тривиальной. Я пытаюсь накарябать утилитку в чистом С без плюсов. При передаче строки в качестве параметра в функцию void MultSlashes( char** Str ); char ResFileName[512]; ....... MultSlashes( (char**)&ResFileName ); эта функция не может прочитать *Str ("Error:expression cannot be evaluated", said QuickWatch). Считает, что строка пустая. Соответственно if( NULL!=strchr(*Str, '\\') ) вызывает access violation. К моменту вызова MultSlashes ResFileName точно имеет осмысленное, не равное "" значение. У меня VC++ 6.0 Enterprise Edition; версия компилятора 12.00.8168. Непатченный. Поможите, люди добрые, и да продлит Аллах ваши дни. |
| Автор: zkv 5.6.2007, 13:38 |
| к моменту вызова strchr(*Str, '\\') нуль-символ в конце строки *Str имеется? В остальном вроде все нормально. Только не вижу, в вашем случае, смысла передавать char**, почему не char*? |
| Автор: mrTeapoт 5.6.2007, 14:50 |
| Терминальный нуль имеется, в натуре. Я пробовал char*, но при этом обработанная в функции строка-параметр по возвращении не менялась. То есть, я понял так, что в случае char* в стек копируется строка, а не адрес? Или не так? |
| Автор: mrTeapoт 6.6.2007, 08:07 |
| Да, прошу пардону. char* работает. Я ошибся при отладке. Я понимаю, что ResFileName можно изменять только поэлементно. Функция писала в него, используя strcpy. Любопытно, однако, было бы узнать, что это было (в смысле с char** ). Ну да ладно. Всем спасибо. ЗЫ: Админу удачи с новым серваком. |