[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
int lsprintf(char *str, const char *fmt, ...) { int *arg = (int *)(&str + 2); // 可変個引数の配列 int cnt; // 生成した文字数 int argc = 0; // 引数の個数 int i; // カウンタ char buf[20]; // 数値変換用バッファ const char *p = fmt;// コピー元フォーマットを走査する strcls(str); strcls(buf); // バッファの初期化 for(cnt = 0; *p != '\0'; p++) { switch(*p) { case '%': // フォーマット指定子の場合は引数の数値を文字列へ変換 switch(p[1]) { //case 'c': int2char(buf, arg[argc++]); break; case 'd': int2dec(buf, arg[argc++]); break; case 'x': int2hex(buf, arg[argc++], 0); break; case 'X': int2hex(buf, arg[argc++], 1); break; case 's': int2str(buf, arg[argc++]); break; //case 'f': } // 変換した数値を生成文字列にコピー for(i = 0; buf[i] != '\0'; i++,cnt++) *str++ = buf[i]; p++; break; case '\\': break; default: // フォーマット指定子以外はそのままコピー *str++ = *p; cnt++; } } return cnt; }といっても、追加したのはフォーマット指定子の%cと%sと%Xだけ。
COMMENT