Re: Переменное число параметров
От: foreground Россия  
Дата: 21.03.08 21:45
Оценка: :))
Здравствуйте, Аноним, Вы писали:

А>Вопрос по переменному числе параметров

А>
А>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 лучше предложил вариант. .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.