自己的阵列sprintf变种

时间:2014-03-01 01:02:07

标签: c arrays stack printf

我一直在尝试制作我自己的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);
}

0 个答案:

没有答案