Здравствуйте, Аноним, Вы писали:
А>Вопрос по переменному числе параметров
А>А>void h (const char *t,...){
А> char *s;
А> s=new char[64];
А> va_list arg;
А> va_start(arg, t);
А> s=va_arg(arg,char *) ;
А> while(s) //[1]
А> {
А> printf("\n%s", s); //[2]
А> s=va_arg(arg,char *) ; //[3]
А> }
А> va_end( arg );
А> delete [] s;
А>}
А>...
А>h("t","h1","h2","h3","h4");
А>
А>бежит по циклу и выводит
А>h1
А>h2
А>h3
А>h4
А>после чего в строке [3] присваивается s 0x0d9f1908 <Bad Ptr> char *
А>while(s) //[1] не ловит окончания цикла, и printf валится.
А>Вопрос как звершить цикл (везде примеры с целыми числами).
Есть еще один неправильный подход

, но меня щас быстро убъют ..
перехватывать исключение
char* s = "";
try
{
while (*(s=va_arg(args, char*))!=NULL)
{
.. тут что-то делаешь с s ..
}
}
catch(...) // catch block will only be executed under /EHa
{
va_end(args);
}
Erop лучше предложил вариант. .