Продолжаю свой тернистый путь по изучению С. Столкнулся с вопросом о необходимости написания функции с возможностью принятия не регулярного числа переменных.
По заданию должен использовать библиотеку stdarg.h. Но я не могу понять, как она работает. Я прочитал несколько статей, в которых предельно понятно описан принцип... А при практическом применении я вхожу в затуп. То ли описанный принцип не верен, тол и я чего-то не понимаю. При попытки получения значения вместо ожидаемого я получаю околесицу из символов, букв и цифр. Пытаюсь всё использовать на WSL Ubuntu.
Что не так делаю?
Для попытки понять принцип я реализовал макет кода:
spoiler#include <stdio.h>
#include <stdarg.h>
int main(char fmt, ...)
{
va_list ap;
char c;
char *s;
c = fmt;
va_start(ap, fmt);
while (1)
{
if (c == 'c')
{
printf("make c\n");
c = (char)va_arg(ap, int);
printf("%c\n", c);
break ;
}
if (c == 's')
{
printf("make s\n");
s = va_arg(ap, char *);
printf("%s\n", s);
break ;
}
printf("not eat!\n");
break ;
}
va_end(ap);
return (0);
}