Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在C中打印多列中的ASCII字符

在C中打印多列中的ASCII字符
EN

Stack Overflow用户
提问于 2017-08-28 05:01:40
回答 1查看 900关注 0票数 3

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

我可以用特定的列数来完成,但是我想不出不写255种不同的打印格式的方法。下面是打印函数的一部分:

代码语言:javascript
运行
AI代码解释
复制
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));
EN

回答 1

Stack Overflow用户

发布于 2017-08-28 05:08:25

考虑到第一个%s是一种类型,而不是%c,您可以编写-

代码语言:javascript
运行
AI代码解释
复制
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这样的字符也会破坏您的对齐方式。

你可以用-

代码语言:javascript
运行
AI代码解释
复制
printf("%3d = %c\t\t",character, isprint(character)?character:'_');

这将只打印可打印的字符,并为其余字符打印'_'

这是DEMO

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45912027

复制
相关文章

相似问题

在C,Linux中打印扩展的ASCII字符

10

在C++的ASCII文件中查找不可打印的ASCII字符

11

在Golang中打印ASCII字符

10

如何在C中打印非ASCII字符

43

在Python中打印扩展ASCII字符

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文