#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); }