Здравствуйте, Аноним, Вы писали:
А>Кто может ответить, почему код вида:
А>void test (int first, ... )
А>{
А>va_list list;
А>va_start(list, first);
А>char *buf = va_arg(list, char *);
А>strcpy(buf, "g");
А>va_end(list);
А>}
А>void main void
А>{
А>char *str = new char[50]; str = "h";
А>test(1, str);
А>}
А>вылетает с ошибкой?
Нужно так:
void test (int first, ... )
{
va_list list;
va_start(list, first);
char *buf = va_arg(list, char *);
strcpy(buf, "g");
va_end(list);
}
void main void
{
char *str = new char[50];
strcpy(str, "h");
test(1, str);
}
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Здравствуйте, ekamaloff, Вы писали:
E>Здравствуйте, Аноним, Вы писали:
А>>Кто может ответить, почему код вида:
А>>void test (int first, ... )
А>>{
А>>va_list list;
А>>va_start(list, first);
А>>char *buf = va_arg(list, char *);
А>>strcpy(buf, "g");
А>>va_end(list);
А>>}
А>>void main void
А>>{
А>>char *str = new char[50]; str = "h";
А>>test(1, str);
А>>}
А>>вылетает с ошибкой?
E>Нужно так:
E>void test (int first, ... )
E>{
E> va_list list;
E> va_start(list, first);
E> char *buf = va_arg(list, char *);
E> strcpy(buf, "g");
E> va_end(list);
E>}
E>void main void
E>{
E> char *str = new char[50];
E> strcpy(str, "h");
E> test(1, str);
E>}
Вылетать действительно перестало, ответ оценил, спс