关于hello.c的思考

最近在看<<深入理解计算机系统>>,看到第一章给出的hello程序,然后就用vi跟着敲了这么一段代码

#include <stdio.h>

int main()
{
    printf("hello, world\n");
    return 0;
}

书中说hello.c程序的ASCII码表示,我想着怎么在shell中把hello.c的ASCII码给打出来.

在网上搜了一圈之后,用od -c命令在shell中显示hello.c的ASCII码,然后我发现字节数比书中的少一点.

kali@kali:~/Public/cex/code/intro$ od -c hello.c
0000000   #   i   n   c   l   u   d   e       <   s   t   d   i   o   .
0000020   h   >  \n  \n   i   n   t       m   a   i   n   (   )  \n   {
0000040  \n  \t   p   r   i   n   t   f   (   "   h   e   l   l   o   ,
0000060       w   o   r   l   d   \   n   "   )   ;  \n  \t   r   e   t
0000100   u   r   n       0   ;  \n   }  \n
0000111

对比了下书中的ASCII码样例,发现它是使用4个空格缩进,而自己的vi默认用\t水平制表符缩进,该怎么修改vi的设置换成4个空格缩进呢?

首先想到的是直接在vi命令行输入 :set tabstop=4 然后:x保存,重新od了一遍文件却并没有变化.这时才想起虽然设置了缩进为4个空格,但是我并没有改文件内容本身啊,也就是说现在还是\t.我应该修改文件内容,先把\t替换成4个空格.

想明白这一点,我进入vi编辑模式去修改文件内容,不过在这之前还需要命令模式下再设置一遍 :set tabstop=4 因为是临时操作,退出vi编辑器重来并不会保存之前的设置.

那么如果我想缩进的设置一直生效怎么弄呢?那就需要修改/etc/vim/下的vimrc文件,在文件末尾追加如下设置(ts就是tabstop的简写,正如nu是number的简写一样):

set ts=4
set expandtab
set autoindent

在把\t改为4个空格之后,再用od -c去显示hello.c程序文件内容就和书中的描述一致了.

kali@kali:~/Public/cex/code/intro$ od -a hello.c
0000000   #   i   n   c   l   u   d   e  sp   <   s   t   d   i   o   .
0000020   h   >  nl  nl   i   n   t  sp   m   a   i   n   (   )  nl   {
0000040  nl  sp  sp  sp  sp   p   r   i   n   t   f   (   "   h   e   l
0000060   l   o   ,  sp   w   o   r   l   d   \   n   "   )   ;  nl  sp
0000100  sp  sp  sp   r   e   t   u   r   n  sp   0   ;  nl   }  nl
0000117

此处用-a选项以名称的形式展示特殊字符,nl 就是\n,sp就是空格.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值