#include <stdio.h> #include <stdarg.h> int vprintf(const char *format, va_list arg) format : フォーマット( printf 参照) arg : 引数並びへのポインタ
#include <stdio.h> #include <stdarg.h> #include <string.h> double average(double first, ...); char buf[100]; int main() { double mean; mean = average(1.0, 2.0, 3.0, 9.0, -1.0); printf("%s", buf); printf(" 平均値は %5.2f\n", mean); return 0; } double average(double first, ...) { double sum; double d = first; int count = 1; char form[100]; va_list marker, marker_o; strcpy(form, " "); printf("data %5.1f", first); sum = 0.0; va_start(marker, first); /* 可変個引数の初期化 */ marker_o = marker; while (d >= 0.0) { sum += d; d = va_arg(marker, double); /* 次の引数の取得 */ if (d >= 0.0) { strcat(form, "%5.1f "); count ++; } } strcat(form, "\n"); vsprintf(buf, form, marker_o); va_end(marker); /* 可変個引数のreset */ return (sum / count); }
data 1.0 2.0 3.0 9.0 平均値は 3.75
菅沼ホーム | 本文目次 | 演習問題解答例 | 付録目次 | 索引 |