gpt4 book ai didi

c - 在 C 中的多列中打印 ASCII 字符

转载 作者:行者123 更新时间:2023-12-02 01:09:12 25 4
gpt4 key购买 nike

我是 C 的新手,我需要在列中打印所有 ASCII 字符(按每列而不是每行的顺序)但是用户需要能够选择显示多少列。

我可以用特定数量的列来完成,但如果不编写 255 种不同的打印格式,我想不出办法。这是打印功能的一部分:

int rows = 255/numberOfColumns;
for (i = 0; i <= rows; i++)
{
printf("%3d = %s\t\t"
"%3d = %c\t\t"
"%3d = %c\t\t"
"%3d = %c\t\t"
"%3d = %c\t\t"
"%3d = %c\t\t"
"%3d = %c\t\t"
"%3d = %c\t\t\n", i, valorControl, i + 32, i + 32,
i+(32*2), i+(32*2), i+(32*3), i+(32*3), i+(32*4),
i+(32*4), i+(32*5), i+(32*5), i+(32*6), i+(32*6),
i+(32*7), i+(32*7));

最佳答案

将第一个 %s 视为一个类型而不是 %c,您可以这样写 -

int rows = (256+numberOfColumns-1)/numberOfColumns;
for (j=0; j<rows; j++){
for (i=0; i<numberOfColumns; i++){
int character = i*rows+j;
if(character>=256)
break;
printf("%3d = %c\t\t", character, character);
}
printf("\n");
}

外循环与您代码中的循环相同(更准确一些)。内部循环使用制表符打印每一列。

此外,您应该尝试只打印可打印的字符。即使在可打印字符中,\t\n 等字符也会破坏您的对齐方式。

你可以用 -

printf("%3d = %c\t\t",character, isprint(character)?character:'_');

这只会打印可打印的字符并为其余部分打印一个 '_'

这是 DEMO

关于c - 在 C 中的多列中打印 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45912027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com