小编Div*_*van的帖子

sprintf预先添加了额外的字符

我决定编写一个二进制转换器,代码小而简单,它需要一个整数,并且应该输出一个带有结果二进制字符串的char*.

这里的问题似乎是最后一个sprintf似乎总是加倍最后一个前置字符.

例如,如果答案是1001001,它将打印11001001,或者如果它应该是-10,则打印-10,后者特别奇怪,因为它甚至不在循环中.

#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>

void bin_string( char** buffer ,int num ){

    bool neg = false;

    if ( num < 0 ){
        neg = true;
        num = ~num+1;
    }

    if( num == 0 )
        sprintf( *buffer, "%d", 0 );

    while( num > 0 ){

        int rem = num%2;

        sprintf( *buffer, "%d%s", rem, *buffer );

        printf("iteration: %s rem: %d\n", *buffer, rem );
        num = num/2;
    }

    if( neg )
        sprintf( *buffer, "-%s", *buffer );
}

int main( …
Run Code Online (Sandbox Code Playgroud)

c

1
推荐指数
1
解决办法
586
查看次数

标签 统计

c ×1