void my_func(char *fmt,...){
char s[256];
va_list list;
va_start(list,fmt);
for(;;){
char *p=va_arg(list,char*);
if(p==0)break;
sprintf(s,p);//Или что ты там хочешь делать
}
va_end(list);
}
Функция с произвольным числом параметров
void my_func(char *fmt,...)
{
char s[256];
sprintf(s,fmt,...);
// Дальше работаем со строкой s
}
Вопрос: как правильно передать в фукцию sprintf все параметры фукции my_func
Цитата:
Originally posted by Smagen
Требуется создать функция следующего вида:
void my_func(char *fmt,...)
{
char s[256];
sprintf(s,fmt,...);
// Дальше работаем со строкой s
}
Вопрос: как правильно передать в фукцию sprintf все параметры фукции my_func
Требуется создать функция следующего вида:
void my_func(char *fmt,...)
{
char s[256];
sprintf(s,fmt,...);
// Дальше работаем со строкой s
}
Вопрос: как правильно передать в фукцию sprintf все параметры фукции my_func
Как говорит один мой знакомы за такие приемы программирования надо руки отбивать по самые плечи...
Код:
Не забудь выполнить проверку на длину строки.
Вобще-то необходимость использовать функциию с произвольным числом параметров возникает ну ОЧЕНЬ редко, как правило всегда можно обойтись указателем на массив строк или чем-то подобным.
2 kot_
... мы все учились по-немногу... и где-нибудь, и как-нибудь... :)
Цитата:
Originally posted by kot_
Как говорит один мой знакомы за такие приемы программирования надо руки отбивать по самые плечи...
Не забудь выполнить проверку на длину строки.
Вобще-то необходимость использовать функциию с произвольным числом параметров возникает ну ОЧЕНЬ редко, как правило всегда можно обойтись указателем на массив строк или чем-то подобным.
Как говорит один мой знакомы за такие приемы программирования надо руки отбивать по самые плечи...
Код:
void my_func(char *fmt,...){
char s[256];
va_list list;
va_start(list,fmt);
for(;;){
char *p=va_arg(list,char*);
if(p==0)break;
sprintf(s,p);//Или что ты там хочешь делать
}
va_end(list);
}
char s[256];
va_list list;
va_start(list,fmt);
for(;;){
char *p=va_arg(list,char*);
if(p==0)break;
sprintf(s,p);//Или что ты там хочешь делать
}
va_end(list);
}
Не забудь выполнить проверку на длину строки.
Вобще-то необходимость использовать функциию с произвольным числом параметров возникает ну ОЧЕНЬ редко, как правило всегда можно обойтись указателем на массив строк или чем-то подобным.
Зачем так сложно? :D
И опасно... char s[256];
Пример из MSDN, думаю, комментарии излишни:
Код:
void test( char * format, ... )
{
va_list args;
int len;
char * buffer;
va_start( args, format );
len = _vscprintf( format, args )+ 1;
buffer = malloc( len * sizeof(char) );
vsprintf( buffer, format, args );
printf( buffer );
free( buffer );
}
{
va_list args;
int len;
char * buffer;
va_start( args, format );
len = _vscprintf( format, args )+ 1;
buffer = malloc( len * sizeof(char) );
vsprintf( buffer, format, args );
printf( buffer );
free( buffer );
}