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

标签 c printf ascii multiple-columns

我是 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/

相关文章:

python - 在属性字符串上强制使用 ASCII 字符的更好方法

PHP输出文本图像字符编码错误

c - 从字符串中获取占主导地位的字符

c - 插入到链表的开头(重新访问)

c - 打印无效的 C 字符串成功

c++ - printf 和多个字符串的不良行为

java - 如何计算字符串中包含重音符号的元音?

c - 我需要从用户那里获取矩阵的大小

c - 带函数返回的地址运算符 "&"

c - 如何将 char 数组中的 base10 十进制(大端)转换为二进制(小端的十六进制)