C言語なら、俺に聞け! <23>
■ このスレッドは過去ログ倉庫に格納されています
0468465
NGNGこっちが正しい奴みたい。
#include <stdarg.h>
typedef char c;
int sprintf(c*b,c*f,...)
{
va_list v;
unsigned i,n;
c x[9]="%csuxodi",*o,*h=b,s[99];
va_start(v,f);
while(*f){
if(*f^37)
*b++=*f;
else{
o=s+97;s[98]=i=0;x[8]=*++f;
while(x[i++]!=*f);
if(i<3)*o=i==1?37:va_arg(v,c);
else if(i<4)o=va_arg(v,c*);
else if(i<9){
n=va_arg(v,int);
if(i>6)
if((int)n<0)*b++='-',n=~n+1;
i=i==5?16:i==6?8:10;
while(*o="0123456789abcdef"[n%i],n/=i)o--;
}
while(*b=*o++)b++;
}
f++;
}
va_end(v);
return b-h;
}
#include <stdio.h>
int main()
{
int i;
char buf[512];
printf("\n%d:%s\n", i, buf);
i = sprintf(buf, "%%%s%s%s %c %d %u %x %i %u %o", "test1 ", "test2 ", "test3", 'a', -123, 123, 0x123fe, -123, -123, 83);
printf("\n%d:%s\n", i, buf);
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています