我一直在尝试制作我自己的sprintf变种,但是当我传递第一个参数时它工作,然后它返回0.000并且它不再起作用,我不知道我是什么在尝试了这么多事情后做错了。
void sprintf_own_variant() {
char buf[1024];
char t[1024];
char* str;
get_stack_string(0, &str);
memcpy(buf, str, 1024);
printf("size of str = %d\n", strlen(buf)); //debug
printf("%s\n", buf);
int len = 0;
for(unsigned int i = 1; i < get_stack_argc(); i++) {
printf("%d [%s]\n", i, buf);
//if(len >= 1023)
//break;
memset(t, '\0', 1024);
memcpy(t, buf, strlen(buf));
switch(get_stack_type(i)) {
case TYPE_STRING: {
char* tmp;
get_stack_string(i, &tmp);
memset(buf, '\0', 1024);
len += sprintf(buf, t, tmp);
}
break;
case TYPE_INT: {
int tmp;
get_stack_int(i, &tmp);
memset(buf, '\0', 1024);
len += sprintf(buf, t, tmp);
}
break;
case TYPE_FLOAT: {
float tmp;
get_stack_float(i, &tmp);
memset(buf, '\0', 1024);
len += sprintf(buf, t, tmp);
}
break;
}
}
add_stack_string(buf);
}