嵌入式学习日记(十一)

本文是作者学习嵌入式过程中的一篇日记,详细记录了在C语言中关于宏定义和数组的学习,并重点探讨了''字符的实际作用。作者通过测试发现,''实际上不是删除字符,而是将光标移动到前一格,使得后续输出覆盖前面的内容。作者倾向于在学习中关注编程的细节,认为这是提升技能的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2017-07-19

今天是学习嵌入式的第十一天。


今天主要是学习了以下几点
1. 宏定义
2. 数组


  • 预处理
    1. 包含头文件
      #include <XXXX.h>
    2. 一般宏定义用法:
      #define <宏名> <字符串名称>
    3. 带参数的用法:
      #define <宏名>(参数列表) <对参数进行的操作>
    4. 条件判断
      #ifdef #ifndef #if #endif #else

偶然发现一个C语言中的小问题

test 1

#include <stdio.h>


int main()
{
  int i,j;
  int a[4][4];

  for(i=0 ; i<4 ; i++)
  {
    for(j=1 ; j<=4 ; j++)
    {
      printf("%d,",j);
    }
    printf("\b\n");
  }

  return 0;
}
结果如下:
$ ./a.out
1,2,3,4,
1,2,3,4,
1,2,3,4,
1,2,3,4,
发现\b并没有发挥出它应有的效果。

test 2

#include <stdio.h>


int main()
{
  int i,j;
  int a[4][4];

  for(i=0 ; i<4 ; i++)
  {
    for(j=1 ; j<=4 ; j++)
    {
      printf("%d,",j);
    }
    printf("\b");
  }

  return 0;
}
结果如下:
$ ./a.out
1,2,3,41,2,3,41,2,3,41,2,3,4
发现没有\n的时候\b就有用了。

test3

经过一番搜索资料。我发现了其中的秘密(之前的思维定式)
#include <stdio.h>


int main()
{
  int i,j;
  int a[4][4];

  for(i=0 ; i<4 ; i++)
  {
    for(j=1 ; j<=4 ; j++)
    {
      printf("%d,",j);
    }
    printf("\b\b");
    fflush(stdout);
    sleep(1);
  }

  return 0;
}
结果如下:
1,2,3,4,
1,2,3,1,2,3,4,
1,2,3,1,2,3,1,2,3,4,
1,2,3,1,2,3,1,2,3,1,2,3,4,
最后的结果:1,2,3,1,2,3,1,2,3,1,2,3,

  \b并不是真正意义上的删除某一个字符,而是将一个光标移动到前一格,之后的输出会覆盖之前的输出结果。如果换行,仍然会把之前所输出的东西暴露无遗。而偶尔会被shell的命令行挡住。




  感觉现在开始每天都写一些与课堂没有太大关系的东西,都是编程方面的一些小细节。原因有两点:

  1. C语言的大模块、大知识点,不想照本宣科,记录一些知识点啥的。如果需要,拿一本C语言的书即可。

  2. 本人就喜欢玩这些细枝末节的东西,乐此不疲。坚信细节决定成败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值