- 753 名前:デフォルトの名無しさん [2023/03/18(土) 05:53:53.69 ID:zRF+ruu+d.net]
- /* データ型が混在した可変個引数をもつ関数の例 */
#include <stdio.h> #include <stdarg.h> void unidisp(char *fmt, ...); int main(void) { unidisp("iii",100, 200, 300); // 3つのデータ表示 unidisp("idsids", 11, 22.22, "aaaa", 33, 44.44, "bbbbb") // 6つのデータ表示 return 0; } /* fmt内容 → i:int値表示 d:double値表示 s:文字列表示 */ void unidisp(char *fmt, ...) { va_list ap; // 構造体オブジェクトを確保 va_start(ap,fmt); // 最終引数を指定してapを設定 while (*fmt) { if (*fmt == 'i') printf("%d\n", va_arg(ap, int)); // int値表示 if (*fmt == 'd') printf("%f\n", va_arg(ap, double)); // double値表示 if (*fmt == 's') printf("%s\n", va_arg(ap, char *)); // 文字列表示 ++fmt; } va_end(ap); // 後処理 } 上記コードのメカニズムがよくわかりません
|

|