在控制台显示上对齐 printf() 列并防止溢出到下一行?

2023-12-03

printf("| processid\t+ threadid\t| refilling\t| drinking\t| thinking\t| 
        waiting\t| terminated\t| p_type\t| required\t| consumed\t| 
        wake_count\t| turnaround_time\t\t+\n");

for (int i = 0; i < size; i++)
{
    printf("|%d\t\t| %d\t\t| %d\t\t\t| %d\t\t\t| \
        %d\t\t\t| %d\t\t\t| %d\t\t\t\t|%s\t\t| \
        %d\t\t\t| %d\t\t| %d\t\t| %d\t\t|\n", 
            pcb[i].processid, pcb[i].threadid, 
            (pcb[i].t_state == 1)?1:0, 
            (pcb[i].t_state == 2)?1:0, 
            (pcb[i].t_state == 3)?1:0, 
            (pcb[i].t_state == 4)?1:0, 
            (pcb[i].t_state == 5)?1:0, 
            (pcb[i].p_type == Student)?"Student": "Bartender", 
            pcb[i].light_beer_required, 
            pcb[i].light_beer_consumed, 
            pcb[i].wake_count, 
            pcb[i].turnaround_time);
}

查看输出

我想以这样一种方式对齐表格,使数据落在各自的列下,但表格列不保留在一行中。

我该如何纠正这个问题?


制表符确实有一席之地,但太僵化,无法用于对齐可变长度数据项进入恒定宽度列。printf() - sprintf()格式填充、宽度说明符、左对齐和右对齐技术对于您想要执行的操作都很有用。底部有一个参考链接,描述了这些方法和其他方法的详细信息。

设计桌子时要考虑的事项:

  • 可用的总字段宽度是多少(所有列共享的宽度)
  • 每列允许的最大字段宽度是多少
  • 格式化应确保写入列的数据不超过其列的宽度(截断字符串、在数字中使用较少的有效数字等)
  • 在格式说明符中使用灵活的格式化技术,例如填充、对齐等,以满足预期的数据宽度要求。 (参见下面的示例。)

以下代码提供了使用这些技术的一些示例:

printf("|%-10d|, |%10d|\n", 1, 2);//left and right justtification within field
int pad1 = 5;
int pad2 = 10;
printf("|%.*d|, |%.*d|\n", pad1, 1, pad2, 2);//"*", variable padding  within field  
printf("|%-15s|\n", "string");// - left justifies
printf("|%15s|\n", "another string");// - right justifies
char *pad = "          "; //10 spaces
printf("|%s%*s|\n", pad, -9, "string");//combination of padding and justification

给定以下参数假设:

typedef enum {
    Student,
    Bartender
}enum_e;   

typedef struct {
    int processid;
    int threadid;
    int t_state;
    enum_e p_type;
    int light_beer_required;
    int light_beer_consumed;
    int wake_count;
    int turnaround_time;
} pcb_s;
    
pcb_s pcb[3] = { {1234, 3, 1, Student, 1, 1, 2, 12},
                 {2345, 2, 2, Bartender, 1, 1, 2, 12},
                 {3456, 1, 3, Student, 1, 1, 2, 12} };

...以下是您的代码,经过修改以仅使用其中一种技术:

    for (int i = 0; i < size; i++)
    {
 //   printf("|%d\t\t| %d\t\t| %d\t\t\t| %d\t\t\t| \
        %d\t\t\t| %d\t\t\t| %d\t\t\t\t|%s\t\t| \
        %d\t\t\t| %d\t\t| %d\t\t| %d\t\t|\n", 
   printf("|%10d|%3d|%3d|%3d|%3d|%3d|%3d|%15s|%3d|%3d|%3d|%d|\n", 
            pcb[i].processid, pcb[i].threadid, 
            (pcb[i].t_state == 1)?1:0, 
            (pcb[i].t_state == 2)?1:0, 
            (pcb[i].t_state == 3)?1:0, 
            (pcb[i].t_state == 4)?1:0, 
            (pcb[i].t_state == 5)?1:0, 
            (pcb[i].p_type == Student)?"Student": "Bartender", 
            pcb[i].light_beer_required, 
            pcb[i].light_beer_consumed, 
            pcb[i].wake_count, 
            pcb[i].turnaround_time);
    }

output of above:
enter image description here

这是一个资源其中详细介绍了这些以及许多其他格式化技术。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在控制台显示上对齐 printf() 列并防止溢出到下一行? 的相关文章

  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 将多个json反序列化为对象c#

    我正在尝试从具有多个对象的 API 调用中反序列化 json 字符串 但没有取得太大成功 JSON purchaseOrders supplierId 500 currencyCode EUR companyId LALA companyN
  • 使用虚方法的 C++ 对象大小

    我对虚拟对象的大小有一些疑问 1 虚函数 class A public int a virtual void v A类的大小是8字节 一个整数 4字节 加1个虚拟指针 4字节 天气晴朗 class B public A public int
  • Bullet/ammo.js 中的刚体(形状)来自 Three.js 中的网格

    我将bullet ammo js 与 Three js 一起使用 我有一个 3d 网格 我想使用精确的形状与软体进行碰撞检测 有没有办法从网格 在 Three js 中 创建 3D 刚体 在项目符号中 这是一个例子 http kidzins
  • 对子数组进行向量化 numpy 唯一

    我有一个形状为 N 20 20 的 numpy 数组数据 其中 N 是一个非常大的数字 我想获取每个 20x20 子数组中唯一值的数量 循环如下 values for i in data values append len np uniqu
  • 为什么java支持原始数据类型的函数重载? [复制]

    这个问题在这里已经有答案了 在学习java中的自动装箱和拆箱时 我了解到java会在需要时将原始数据类型转换为包装类 反之亦然 例如如果函数正在执行Integer作为参数 如果我们将值传递为1然后java编译器会将其转换为new Integ
  • 内存中、独立、断开连接的 ADO 记录集

    当我的表单加载时 我在数据表子表单上运行此代码 并且没有收到任何错误消息或代码中断 我的 debug print 显示记录集 rs 充满了 2131 条记录 就像它应该的那样 但我的表单显示单行带有 Name 在各个领域 我的控件上的控件源
  • 在Android中浏览并上传pdf或word文件

    private void getDocument Intent intent new Intent Intent ACTION GET CONTENT intent setType application msword applicatio
  • ASP.Net MVC4 将“创建视图”绑定到包含列表的模型

    你好 在互联网领域 我有一个有趣的难题要问你 如果该对象包含纯粹使用 MVC 视图 部分视图的其他对象的列表 是否可以绑定视图来创建对象 伙计 结果很复杂 就像 让我给你一个快速的代码示例来说明我的意思 Models public clas
  • mongodb是否会自动在嵌入文档的_id字段上创建索引?

    在 node js 项目上使用 mongodb 和 mongoose 我想知道是否必须在嵌入项目的 id 字段上确保索引 也就是说 我看到 mongodb 自动在集合的 id 字段上创建索引 它是否也对嵌入集合的 id 字段执行相同的操作
  • 使用反射在抽象类中创建实例

    是否可以使用反射在抽象祖先类中创建派生类的实例 可以说 abstract class Base public Base createInstance using reflection Class ctor c getConstructor
  • Google 日历 api(超出日历使用限制)

    我在我的 php 项目中使用 Google Calendar Api 每天在执行插入查询时都会收到 超出日历使用限制 消息 但删除和列表方法工作正常 这是我的插入功能 谁能帮我 function insertEvent start end
  • 使用复选框在 ReactJS 中保存表单值

    我使用反应钩子表单创建了一个表单组件 该组件由一组复选框和一个文本输入组成 当用户单击最后一个复选框时出现文本输入custom 这个的想法是 当用户单击时 会出现一个文本输入 并且用户可以添加自定义答案 选项 例如 如果用户输入test在输
  • Django:通过查询计算列值的总和

    我有一个模型 class ItemPrice models Model price models DecimalField max digits 8 decimal places 2 我尝试用这个来计算总和price在此查询集中 items
  • 两个卷积层之间的互连

    我有一个关于 CNN 中两个卷积层之间互连的问题 例如假设我有这样的架构 输入 28 28 conv1 3 x 3 滤波器 编号 过滤器数量 16 conv2 3 x 3 滤波器 编号 过滤器数量 32 假设图像尺寸没有减小 经过 conv
  • 值传递和 std::move 相对于引用传递的优点

    我现在正在学习C 尽量避免养成坏习惯 据我了解 clang tidy包含许多 最佳实践 我尝试尽可能地坚持它们 尽管我不一定理解why它们还被认为是好的 但我不确定我是否理解这里推荐的内容 我使用了教程中的此类 class Creature
  • 如何使用 Mongoose 删除数据库?

    我正在 Node js 和 Mongoose 中准备一个数据库创建脚本 如何检查数据库是否已存在 如果存在 则使用 Mongoose 删除 删除 它 我找不到用 Mongoose 删除它的方法 没有方法可以从猫鼬中删除集合 您能做的最好的事
  • Oracle 根据出生日期和今天计算年龄

    我想在 Oracle 函数中根据出生日期计算当前年龄 我正在使用的是 Today Dob 30 12 但这并不准确 因为有些月份有 31 天 我需要以最高精度获得正确的年龄 我怎样才能做到这一点 SQL gt select trunc mo
  • 带有附加列的sql批量插入

    csv 文件包含 8 列 col1 col2 col8 文件名也包含必须插入表中的日期 如果表中的列数和 csv 文件中的列数相等 则以下查询将文件中的所有记录导入到表中 query BULK INSERT real data FROM p
  • 如何从分类分布中抽取样本

    我有一个 3D numpy 数组 其中最后一个维度中包含每个类别的概率 就像是 import numpy as np from scipy special import softmax array np random normal size
  • 在控制台显示上对齐 printf() 列并防止溢出到下一行?

    printf processid t threadid t refilling t drinking t thinking t waiting t terminated t p type t required t consumed t wa