こんにちは!次のコードについて疑問があります。
[1] for ループの中間条件はどういう意味ですか? ; *p;
そして; *sval;
- 入力文字列の終わりに達したか? はいの場合、それはどのように決定されますか?
[2] 複雑な for ループがわかりません。
条件が満たされない場合は、*p == %
すぐに切り替えを行うとします。次に、反対のケースを考えてみましょう。%
が満たされている場合でも、 1 つおきの文字を入力switch
します。これらの2つのケースの違いは何ですか? 私はsthでひどく間違っているに違いありませんが、2時間以上間違いを見つけることができません...
#include <stdarg.h>
/* minprintf: minimal printf with variable argument list */
void minprintf(char *fmt, ...)
{
va_list ap; /* points to each unnamed arg in turn */
char *p, *sval;
int ival;
double dval;
va_start(ap, fmt); /* make ap point to 1st unnamed arg */
for (p = fmt; *p; p++) { /* [1] */
if (*p != '%') {
putchar(*p);
continue; /* [2] */
}
switch (*++p) {
case 'd':
ival = va_arg(ap, int);
printf("%d", ival);
break;
case 'f':
dval = va_arg(ap, double);
printf("%f", dval);
break;
case 's':
for (sval = va_arg(ap, char *); *sval; sval++)
putchar(*sval);
break;
default:
putchar(*p);
break;
}
}
va_end(ap); /* clean up when done */
}
助けていただければ幸いです。