я пытаюсь решить следующую проблему ...
У меня есть функция, которая должна принимать следующие аргументы:
переменное число аргументов (различных типов) в ANSI C
change(input_file_name, output_file_name, pid1, pid1_file_name, pid2, pid2_file_name, etc...);
поэтому в случае бега этой функции будет:
change("input.file","output.file", 20, "file1.file", 21, "file2.file", 22, "file3.file", 23, "file4.file);
определение этой функции:
#include <stdarg.h>
int change(char input[], char output[], int n, ...)
{
va_list ap;
unsigned int a;
char *name;
va_start(ap, n);
...
for (; n; n-=2) {
a = va_arg(ap, int);
name = va_arg(ap,char *);
...
}
va_end(ap);
return i;
}
, но это работает неправильно. При попытке получить переменные «a» и «name» я получаю случайные данные.
В определении у вас есть дополнительное 'n' для количества пар pid/name, которые следуют за тем, что вы не проходите –