1. 程式人生 > >C 程式設計語言-讀書筆記

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。