C 程序设计语言-读书笔记

说来惭愧,上大学学的第一门计算机编程语言就是c语言。到现在也有将近五年的时间了,可是对于C语言的理解还是停留在表面之上,今天拜读了C语言的缔造者B.W.Kernighan、D.M.Richie编写的C语言程序设计才发现自己真的是从来没有好好学过C语言。废话少说,准备拜读完该书,然后再系统的学习C语言的其他经典巨著,算法C语言实现,Unix编程艺术。

1.EOF

关于getchar()和putchar(),本书列举了一个文件复制的实例,代码如下:

#include<stdio.h>

int main()
{
       int c;
       
       while((ch = getchar()) != EOF)
        {
               putchar(ch0;
        }

}

 

注意到示例中,变量c的类型为int类型,书中是这么解释的:c语言中为了将文件中的有效数据与文件末尾区分开来,采用的是下面的方案:当getchar()在没有输入时会返回一个特殊值,这个特殊值不能与实际的任何字符相混淆,这个值为EOF(end of file),ch必须被声明为可以存放getchar()任何返回值的类型。之所以将ch声明为int,是因为char类型不能存放于任何字符类型不同的EOF,所以定义了int类型表示ch。

EOF被定义在<stdio.h>文件中,其为整数类型,使用打印函数打印EOF,输出为-1;通过gdb调试发现EOF内存中的值为:0xffffffff。

你可能感兴趣的:(C 程序设计语言-读书笔记)