精华内容
下载资源
问答
  • c语言自动对齐原则

    2021-05-21 03:43:17
    转载一篇博客:http://blog.csdn.net/hairetz/article/details/40840881:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该...

    转载一篇博客:

    http://blog.csdn.net/hairetz/article/details/4084088

    1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储。

    就是说每个成员要考虑之气那成员的地址来存储

    比如

    struct aa

    {

    short ss;//本来用两个字节就好了,但是因为int需要2*2个字节,ss如果只用2个字节存储,则a就不是从2*2整数倍数开始存储

    int a;

    }

    2:结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储.(struct a里存有struct b,b里有char,int ,double等元素,那b应该从8的整数倍开始存储.)

    就是当一个结构体里还有结构体则 该结构体从这个结构体里最变量最大字节数整倍开始存储

    3:收尾工作:结构体的总大小,也就是sizeof的结果,.必须是其内部最大成员的整数倍.不足的要补齐.

    就是最后面计算出来不足最大成员整数倍要增加到整数倍。

    #include

    using namespacestd;

    typedefstructbb

    {int id; //[0]....[3]

    double weight; //[8].....[15]      原则1

    float height; //[16]..[19],总长要为8的整数倍,补齐[20]...[23]     原则3

    }BB;

    typedefstructaa

    {char name[2]; //[0],[1]

    BB b; //[24]......[47]          原则2

    int id; //[4]...[7]          原则1

    double score; //[8]....[15]

    short grade; //[16],[17] 原则最后一条

    }AA;intmain()

    {

    cout<

    }

    原文:http://www.cnblogs.com/hong2016/p/6730128.html

    展开全文
  • 刚学习C语言的小伙伴是否还在为终端上实现类似与mysql的表格式整齐打印出字符串信息而感到烦恼呢!因为中文字符串的存在,导致 老是无法实现格式上的对齐,今天小编,哦,不,是楼主,为你们提供了解决方案。(好吧...
  • C语言控制台打印输出整齐问题

    千次阅读 多人点赞 2019-07-08 17:19:33
    关键词:控制台\打印\制表符\空格\格式控制符\列\对齐\初衷: 经常写程序时需要打印输出,然后每次又打印的一团糟糕,我又是一个接近强迫症和略微完美主义者,碰巧好像网上没有我所需要的帖子,所以经过探索之后得到...

    关键词控制台\打印\制表符\空格\格式控制符\列\对齐\ 
    初衷:
    经常写程序时需要打印输出,然后每次又打印的一团糟糕,我又是一个接近强迫症和略微完美主义者,碰巧好像网上没有我所需要的帖子,所以经过探索之后得到这些如何让自己在控制台打印输出整齐的Tips,同时和大家分享!鄙人水平不够,有错还望指教

    首先你需要明白的影响打印整齐控制的因素:

    1.制表符(8个空格)

    2.键盘输入一个空格(一个空格)

    3.格式控制符(具体空格情况不同,见下)

    4.打印的内容(英文数字占一个空格,汉子2个空格,其他标点符号基本一个空格)


    \t 制表符  占八个空格
    我的理解:
    制表符顾名思义是如同划分表格一般将将面分割成8个空格为1个大格的表
    系统在检测到\t时,会自动统计:从上一个\t控制的大格子尾部到此\t所占的空格数(空格即位数即列数)。

    \t会根据统计到前面输出占有的空格数对后面进行补空格输出。

    假如统计空格数为N,则补齐Num=8-N%8个空格(7个补一个,8个补8个,8个补7个,12个补4个)

    参考(转义字符

    格式控制符控制的位数 如%10s、%4.2d等等  参考格式控制符详细

    举个例子:

    对于%10s,如果实际打印没超过格式规定长度10,则计算的空格数数为10,如果超过10,则按实际长度计算 ,如果打印了6个字,占12个空格,则计数的空格数为12.

    5) 键盘自己敲入的空格也会被统计在内(相信大家经常敲入空格来使打印进退),即如果在%10s前空了4个空格,则统计要加上空格数。

    举例说明:

    我现在要打印一些车辆的信息,我想让上面的类别信息和下面打印的数据对齐(一开始我们没有添加\t)

    printf("当前信息库中共有%d台车辆信息\n",M);
    printf("车主姓名车牌号码汽车品牌车长车高购买年份\n");
    for(int i=0;i<M;i++)
    {
        Car B;
        fread(&B,sizeof(Car),1,fp);
                printf("%-7s\t%-7s%-5s%-4.2f%-4.2f%-4d\n",B.owner,B.Card,B.brand,B.height,B.weight,B.year);
    }
    printf("\n");

    首先对于打印车主姓名列:

    打印类别信息''车主姓名占8个空格

    打印格式控制符为%-7s,一般姓名为3个汉字占6格,这里设置位数为7,所以在接下来的\t前面有7个,故会补一个空格,\t作用结束

    显示为:

    车主姓名占了8个空格,红色方框宽度为7个空格,由格式控制符控制,后面的空格为\t补齐

    当%mS中m<7时结果都为上图,只是红色框图会变窄,绿色框变宽,因为占得空格变小,\t在后面补齐的空格增多

    那么当%mS中m>=8&&m<16时如何:

    此时统计起前面空格为m>8,于是补空格N=8-m%8空格,假如m=8,则补8个空格

    结果如图:

    补了八个空格与上面的车牌号码整个对齐了

    当然我们不想这样对齐,我想和车牌号对齐,于是在车主姓名后面加了\t

    变成printf("车主姓名\t车牌号码汽车品牌车长车高购买年份\n");

    结果:

    车主姓名有8个空格,遇上\t会再补8个空格。于是对齐了。

    但是我觉得不好看,我觉得空太宽了,所以代码变为

    格式控制符为%-7s ,\t会补一个空格。

    结果如图:

    红色方框为7个空格位,由格式控制符控制,绿色为\t补充的一个空格,黄色方框是printf语句中空的4个空格打印出来的效果

    看上去稍微舒服了一些,之前空太宽了。

    现在我想将车牌号码和汽车品牌分隔开来,于是给它们中间加\t.

    车牌为1个汉字加6个英文数字组合,计算的8个空格,前面黄色方框占了4个空格,统计共12个空格,预计\t要补4个空格

    “车牌号码”占4个空格,前面键盘输入4个空格,统计共12个空格,预计其后\t补4个空格

    结果如图:

    蓝色宽占4格,为\t补出来的4个空格。

     

    总结:

    讲到这里其实差不多了,后面的数据对齐其实道理差不多。

    举例子会比较生动,知道各种数据内容打印出来所占的格数后,通过用自己加空格和加\t的方法,调整使数据对齐。

    希望大家能够通过这个能够举一反三。

    我写下这个帖子也是为了我更好的掌握,这就是所谓的费曼学习法吧。

     

     

     

     

    展开全文
  • c语言编写对齐输出

    万次阅读 2019-02-21 16:55:18
    描述:读入三个整数,按每个整数占8个字符的宽度,右对齐输出它们。 输入:只有一行,包含三个整数,整数之间以一个空格分开。 输出:只有一行,按照格式要求依次... 分析:这里需要用到的是C语言printf对齐输出...
    1. 描述:读入三个整数,按每个整数占8个字符的宽度,右对齐输出它们。
    2. 输入:只有一行,包含三个整数,整数之间以一个空格分开。
    3. 输出:只有一行,按照格式要求依次输出三个整数,之间以一个空格分开。

         样例输入:

     123456789 0 -1

         样例输出:

      123456789        0       -1

         分析:这里需要用到的是C语言printf对齐输出方式;

         在编程调试时,通常将log信息输出到文件中,此时需要注意输出对齐方式,C语言中,常见的有两种方式可以实现其输出字符串或数字对齐输出

        (1)制表符\t
          制表符\t输出的时候,会移动输出光标,实现对齐效果。因此可以在输出的对应位置,增加\t来实现对齐。

          缺点:要求每行相同列输出占用空间差别不可以太大。(若输出的是数字信息,可以直接将log信息copy到excel表格中,能很好地统计数字数值信息)
        (2)加入占用宽度控制数字
          使用printf格式化输出时,每个控制字符可以写成%nC的形式,如%10d, %12f, %5c, %20s等等,其对应的是不足部分左侧补空格,实现右对齐效果;若要不足部分右侧补空格,只需要在宽度字符前加-符号即可,如%-12f,此时实现的是左对齐效果。
          原文:https://blog.csdn.net/chengzhilong94/article/details/54907141

    实现算法:
          

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int a,b,c;
        scanf("%d %d %d",&a,&b,&c);   //读入三个整数
        printf("%8d %8d %8d\n",a,b,c);  //将读入的三个整数,按每个整数占8个字符的宽度,右对齐输出它们。
    
        return 0;
    }
    

     

    展开全文
  • C语言printf对齐输出方式

    万次阅读 多人点赞 2017-02-07 10:36:10
    C语言中,常见的有两种方式可以实现其输出字符串或数字对齐输出 制表符\t 制表符\t输出的时候,会移动输出光标,实现对齐效果。因此可以在输出的对应位置,增加\t来实现对齐。但有个缺点:要求每行相同列输出占用...

    在编程调试时,通常将log信息输出到文件中,此时需要注意输出对齐方式
    C语言中,常见的有两种方式可以实现其输出字符串或数字对齐输出

    1. 制表符\t
      制表符\t输出的时候,会移动输出光标,实现对齐效果。因此可以在输出的对应位置,增加\t来实现对齐。但有个缺点:要求每行相同列输出占用空间差别不可以太大。(若输出的是数字信息,可以直接将log信息copy到excel表格中,能很好地统计数字数值信息)
    2. 加入占用宽度控制数字
      使用printf格式化输出时,每个控制字符可以写成%nC的形式,如%10d, %12f, %5c, %20s等等,其对应的是不足部分左侧补空格,实现右对齐效果;若要不足部分右侧补空格,只需要在宽度字符前加-符号即可,如%-12f,此时实现的是左对齐效果。
    展开全文
  • 在编程调试时,通常将log信息输出到文件中,此时需要注意输出对齐方式C语言中,常见的有两种方式可以实现其输出字符串或数字对齐输出制表符\t制表符\t输出的时候,会移动输出光标,实现对齐效果。因此可以在输出的...
  • 经常会遇到使用控制台进行命令行方式操作的需求,在控制台使用表格将一些结果有组织地反馈给工具使用者,是一个必要的功能,本文将给出一个用于实现控制台输出表格样式格式化的C语言代码,希望可以帮助到有此方面...
  • ![图片说明](https://img-ask.csdn.net/upload/201601/14/1452783661_395733.png)
  • C语言打印直方图(垂直方向)

    千次阅读 多人点赞 2017-08-02 17:20:18
    C语言打印直方图(垂直方向)《The C Programming Language》第二版习题
  • //整齐打印文件内容的整合函数 void showInfoInorder(STNODE *head) {  int a = 1 + getLines(head); //读取员工信息并且存入字符串数组中来, 返回记录的行数  int n = 9;  char *name[a*n]; //定义二维字符...
  • VC数据库编程中的打印控制比较复杂,但它也给程序员最大的灵活性,而这种灵活性正是我们需要的。因为各行业、部门的报表一般都不太规整,特别是表头部分,二、三重嵌套的情况很常见。下面我们就开发中碰到的一些问题...
  • clover_toeic   博客园 首页 新随笔 联系 管理 订阅 随笔- 80 文章- 0 评论- 125  ...C语言字节对齐问题详解   引言  考虑下面的结构体定义: 1 typedef struct{ 2 char c1; 3...
  • C语言中将字符串打印成指定长度的方法如果要按表格形式打印一组字符串,你就需要将字符串打印成指定长度。利用printf()函数可以很方便地实现这一点,请看下例:# include char * data[25] = {"REGION", "--Q1--", "--...
  • 文章目录1、基础成员大小2、为什么要内存对齐?3、联合体的大小4、32位环境下的结构体大小4.1 成员...上面表格是常用的系统环境下的数据类型,但是不同的系统环境有不同的数据模型,见下表。(注:后续的测试都是建立在
  • 代码对齐技巧(tab,空格)

    千次阅读 2021-02-26 13:50:42
    看到我技术交流群里在讨论代码对齐的话题:STM32CubeMX生成代码使用2个空格对齐,有办法让代码编变成4个空格吗?如果代码对齐不规范,代码看着就很凌乱,比如:如果你看到类似以上代码,特别是前同事丢下的烂摊子,...
  • C语言基础知识入门(大全)

    万次阅读 多人点赞 2021-05-11 18:34:11
    一.C语言入门 C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级...
  • 最近在进行控制台版的图书管理系统开发时,遇到了一个很尴尬的问题,控制台输出的文字无法对齐。我在网上找了诸多资料,但不是门槛较高就是难以实现比较好的效果。经过反复地思考,我最终决定用自动补全tab的方式来...
  • 树的打印 344 程序的剩余部分 345 象棋程序中用到的数据结构 349 答案 351 编程练习 353 第十八章 模块化编程 354 模块 354 公用和专用 355 extern修饰符 356 头文件 358 模块体 361 使用无限数组的程序 ...
  • printf对齐

    2016-12-30 09:51:00
    C语言中,将printf函数打印出的字符像表格一样分类对齐。%-10d表示这个字符型占10个字节,负号表示左对齐。即下面表格中的x1位置开始填充。如果是%10d,表示右对齐,即在x10位置对齐。 x1 x2 x3 x4 x5 ...
  • 在控制台输出数据的时候,也就是用printf()的时候,我们经常用\t来控制对齐,以使输出的结果更加整齐美观。 然而有时候我们发现及时使用了\t 也会出现数据对不齐的情况,这就跟\t究竟对应几个空格有关系。 先给出...
  • C语言对数据库SQLite3的增删查改

    千次阅读 2019-05-31 18:24:17
    //创建一张数据库的表格,如果表格存在打印errmsg消息,不进行重复创建操作 if ( sqlite3_exec ( db , "create table stu (id Integer, name char, score Integer);" , NULL , NULL , & errmsg ) != ...
  • printf输出多列时的列对齐

    千次阅读 2017-06-09 12:59:29
    列左对齐 printf("%-*s", 20, string); 表示输出字符串左对齐输出20,如果字符串不够20个,以空格补齐。 -表示左对齐。 例: struct help_struct { char *option_name; char *option_value; ...
  • //用for循环语句//打印表头 for(i=1;i{ printf("%4d\t",n); }//乘法表用两层循环,一层控制行,一层控制列 for(i=1;i{ for(j=1;j{ printf("%4d\t",i*j) } } 主要的方法就是这个,数据.void three() //九九乘法...
  • 一起学习C语言C语言数据类型(二)

    千次阅读 2020-01-31 00:21:01
    一起学习C语言C语言数据类型(一)>中,我们了解到“位与字节”的含义,并分析无符号短整形和有符号短整形的运算方式。本篇文章中,我们进行分析二进制到八进制、十六进制转换等内容。 章节预览: 1.2.2 无符号...
  • C语言程序设计策划书

    2021-05-19 12:41:43
    信息工程学院学生会科技部关于举办信息工程学院C语言程序设计大赛的策划书一、活动背景:随着计算机技术的快速发展,计算机程序语言的多样化,C语言已经使用的越来越广泛,C语言作为一种最基本的计算机语言对于当代...
  • printf 格式控制符的标准格式: %[flag][width][.precision]type 说明: flag: ① -左对齐,若无则右对齐。 ② +在输出整数和小数时输出正负号。 ③ (空格)在输出整数和小数时为正加上空格,为负加上负号。 ④ # 在...
  • 道阻且长,行则将至。埋头苦干,不鸣则已,一鸣惊人! 1 printf 函数简介   printf() 和 scanf() ...  请求 printf() 函数打印数据的指令要与待打印数据的类型相匹配。   参考网址:     菜鸟教程:C ...
  • c语言变量

    2021-01-11 13:53:41
    下一篇:c语言流程控制 变量概述 变量的名字是一种标识符 标识符的构造规则:标识符只能由字母、数字和下划线组成,数字不可以出现在第一个位置上,c元的关键字不可以做标识符 关键字: 赋值和初始化 ...
  • C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言,所以说学习C语言基础知识入门是进入编程世界的必修课!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,259
精华内容 1,303
关键字:

c语言打印表格对齐

c语言 订阅