The C Programming Language 学习笔记

  • 单引号的字符表示一个整数,该值等于此字符在机器字符集中对应的数值,我们称之为字符常量。但是他只不过是小的整型数的一种写法而已。例如,'A'是一个字符常量,在ASC字符集中其值是65(即‘A’的内部表示值是65),当然,用‘A’比65好,因为‘A’的意义更明确。
  • 习题1-8
    Exercise 1-8 
    Write a program to count blanks, tabs, and newlines. 
    
    #include <stdio.h>
    
    int main(void)
    {
      int blanks, tabs, newlines;
      int c;
      int done = 0;
      int lastchar = 0;
    
      blanks = 0;
      tabs = 0;
      newlines = 0;
    
      while(done == 0)
      {
        c = getchar();
    
        if(c == ' ')
          ++blanks;
    
        if(c == '\t')
          ++tabs;
    
        if(c == '\n')
          ++newlines;
    
        if(c == EOF)
        {
          if(lastchar != '\n')
          {
            ++newlines; /* this is a bit of a semantic stretch, but it copes
                         * with implementations where a text file might not
                         * end with a newline. Thanks to Jim Stad for pointing
                         * this out.
                         */
          }
          done = 1;
        }
        lastchar = c;
      }
    
      printf("Blanks: %d\nTabs: %d\nLines: %d\n", blanks, tabs, newlines);
      return 0;
    } 
    其中的lastchar != '\n'让我很困惑,注释的意思是如果文件不是以一个newline结束的,那么这行也应该加入到newlines中。但我在ubuntu下的终端下,如果不起新的行,无法通过ctrl + D(windows使用ctrl + z)输入EOF,也就不存在不以‘\n’结束的情况了。但是如果以管道的方式读进去,最后一行就可以是不以‘\n’结束的点击打开链接。为此研究了‘\n’, 具体研究结果参照这里
  • c语言传递参数时采用值传递,要想修改实参,需要传指针。当把数组名用作参数时,传递的数组首元素的位置或地址,并不复制数组本身,在被调用函数中,可以通过数组下标访问或者修改数组元素的值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值