#define N 12
char buf[N];
int index = N-1;
buf [index] = '\0'; // Assign the last element of the array.
int negative = num < 0;
do {
int digit = num%2;
buf[--i] = abs(digit) + '0'; // Assign the previous array element.
num /= 2;
} while (num);
if (negative) {
buf[--i] = '-';
}
printf("<%s>\n", buf + i);
1条答案
按热度按时间xqkwcwgp1#
...将数组中的元素从末尾添加到开头。
在C语言中,一个 array 一旦被声明就不能改变大小。通过
int
到二进制文本的字符串,我们知道所需的最大数组大小。现在,让我们假设它是12。设置指向数组末尾的索引。
在
%2
循环中,递减索引以从结尾到开头工作。请注意,初始数组元素不用于
num
的小值。备选方案:我们可以使用
memmove()
将字符串移到数组的第一部分。或者循环num
两次,第一次查找所需的数组大小,然后使用大小合适的数组填充它。我们可以从数组的开头填充(最低有效位在前),然后反转字符串。在C2x的下一个版本中,我们可能只需要执行
snprint(array, sizeof array, "%b", num);