powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / va_start() проблема
3 сообщений из 3, страница 1 из 1
va_start() проблема
    #34288132
Фотография APM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой код.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
void log_printf(const char *fmt, ...)
{
   FILE *fd;
   va_list ap;
   time_t t = time(NULL);
   fd = fopen_p("1.log","a");
   if (!fd) {
      d_printf("Failed to open - %s\n", strerror(errno));
      return;
   }
   va_start(ap, fmt);
   vfprintf(fd,fmt,ap);
   va_end(ap);
   fclose(fd);
}

Вызывается так
Код: plaintext
1.
log_printf("%d %d%s. %s {%s}",a,b,c,F(d),F(e));
не смотря на то что F(d) и F(e) разные значения имеют в файл попадает одинаковые.

Если написать так
Код: plaintext
1.
2.
log_printf("%d %d%s. %s {%s}",a,b,c,F(d));
log_printf("{%s}",F(e));
то все будет правильно. Не пойму где собака порылась.
...
Рейтинг: 0 / 0
va_start() проблема
    #34288183
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверь типы a,b,c и тип возвращаемого значения F(...).
Должно быть:
а,b - int
c и F(...) - char *
...
Рейтинг: 0 / 0
va_start() проблема
    #34288641
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
APM
Вызывается так
Код: plaintext
1.
log_printf("%d %d%s. %s {%s}",a,b,c,F(d),F(e));
не смотря на то что F(d) и F(e) разные значения имеют в файл попадает одинаковые.

Если написать так
Код: plaintext
1.
2.
log_printf("%d %d%s. %s {%s}",a,b,c,F(d));
log_printf("{%s}",F(e));
то все будет правильно. Не пойму где собака порылась.

Тут не с va_start проблема. F(d) и F(e) возвращают указатель на одну и ту же область памяти. И храниться в этой области памяти будет результат последнего вызова функции F. Надо что то наподобие:
Код: plaintext
1.
2.
3.
char *p=strdup(F(d));
log_printf("%d %d%s. %s {%s}",a,b,c,p,F(e));
free(p);
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / va_start() проблема
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]