我曾试图自己做,但失败了(我很想再做一次学习,但只是需要一个例子程序)。本质上,我想表示一个二进制数,但用0填充到最接近的字节,所以我在这里找到了一个关于另一个问题的函数:

char * string_pad(char * string, size_t padlen, char * pad) {
    size_t lenstring = strlen(string);
    size_t lenpad = strlen(pad);

    char * padded = (char*)malloc(lenstring + lenpad + 1);
    strncpy(padded, string, lenstring); /* copy without '\0' */
    padded += lenstring; /* prepare for first append of pad */
    for(padlen += 1; padlen > 0; padlen--, padded += lenpad)
        strncpy(padded, pad, lenpad);
    *padded = '\0';
    return padded;
}

我这样称呼它:
printf("Test: %s\n", string_pad(dec2bin(~myInt), 32, "0"));

不幸的是,它打印了“Test:”但没有其他内容。如果您需要知道,我的dec2bin返回一个简单的字符指针。
是什么导致它什么也没做?
为什么这个函数接受char*pad而不接受char pad,这样我就可以用'0'来填充它,“0”是否也能工作,或者它是否添加了一个空终止符,把它搞砸了?
编辑:或者有人能提供一个简单的例子(或者我需要做什么)来填补这个空白吗?这个片段似乎不太好。。
我在想创建一个初始化为零的字符,然后复制之后的二进制文件,但是如何让它工作我却忘了。。

最佳答案

“padded”在返回字符串时指向字符串的末尾。

09-07 23:46