Я пытался сделать это сам, но потерпел неудачу (я испытываю желание сделать это снова для обучения, но мне просто нужно это для примера программы). По сути, я хочу представить двоичное число, но, конечно, дополненное до ближайшего байта с 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" или добавить нулевой терминатор, облажав его или что-то еще?
РЕДАКТИРОВАТЬ : Или кто-нибудь может привести простой пример (или что мне нужно сделать), чтобы оставить для этого отступ? Этот фрагмент выглядит не так уж хорошо ..
Я думал о создании chararray, инициализированного в ноль, затем копировании двоичного файла после этого, но как заставить его работать, ускользнуло от меня ..