Создайте функцию с переменными документами (строками), которая выводит эти строки и подсчитывает их

#c #variadic-functions

Вопрос:

Я новичок в Си. И я все еще не совсем понимаю, что к чему. Не мог бы кто-нибудь мне помочь, пожалуйста. Я должен создать функцию с переменными аргументами (строками), которая выводит эти строки и подсчитывает их.

 #include lt;stdio.hgt;  void PrintAndCount(const char* s, ...) {  char **p = amp;s;  while(*p != NULL)  {  printf("%sn", *p);  (*p)  ;  } }  int main() {  char s1[] = "It was a bright cold day in April.";  char s2[] = "The hallway smelt of boiled cabbage and old rag mats. ";  char s3[] = "It was no use trying the lift.";   PrintAndCount(s1, s2, s3, NULL);   return 0; }  

Комментарии:

1. Переменные аргументы не используют указатели. Вам нужно использовать макросы в stdarg.h . Похоже, вам нужно прочитать учебник по обработке списков переменных аргументов.

Ответ №1:

Вы не можете напрямую выполнять итерацию по набору переменных аргументов, поскольку то, как они передаются функции, сильно зависит от реализации.

Вместо этого используйте a va_list для перебора их.

 #include lt;stdarg.hgt;  void PrintAndCount(const char* s, ...) {  va_list args;  va_start(args, s);   printf("%sn", s);  char *p = va_arg(args, char *);  while(p != NULL)  {  printf("%sn", p);  p = va_arg(args, char *);  }   va_end(args); }