C primer plus 讀書筆記第四章

來源:互聯網
上載者:User

標籤:

本章的標題是字串的格式化輸入/輸出,重點介紹輸入和輸出。

 

本章的第一段範例程式碼和上一張範例程式碼很相近,代碼就不貼了,新出現的特性是使用了一個數組來存放字串,C預先處理命令和strlen()函數。

下面具體介紹這些概念。

 

1.字串

  C語言沒有為字串定義專門的變數類型,而是儲存在char數組中。

  注意:

  1.scanf()讀取字串時,會在遇到第一個空白字串,定位字元或者分行符號處停止讀取。所以使用%s的scanf()只會讀取一個單詞而非整個句子(C語言一般用gets()來處理一般的字串)。

  2.strlen()和sizeof()區別。sizeof是操作符,不是函數。它後面的()並不是必須的,沒有歧意時就不必寫上了。sizeof操作符計算的是系統為它後面的變數或類型名分配的空間大小,無論其中是否儲存了有用資料。strlen()是庫函數,()中必須是字串指標或字串常量,它返回的是檢測對象中第一 個‘\0‘前的字元個數,不含‘\0‘。

2.C前置處理器

  用法:#define TAXRATE 0.015。在編譯器的時候,0.015會代替所有TAXRATE,這種方式稱為編譯時間代入法。這樣定義的常量通常稱為明顯常量。一般情況下,常量名要大寫,這是一個約定俗成的習慣。

  C90新增來一種建立符號常量的方法:使用const關鍵字。例如,const int MONTHS = 12; C語言還可以通過枚舉功能建立符號常量,後面再談。

  系統也定義來一些明顯常量,例如在標頭檔limits.h和float.h裡就有類似的行:#define INT_MAX +32767。

3.printf()和scanf()

  1.printf。格式printf(control-string, item1, item2...); 其中控制字元串包括實際要列印的字元和轉換說明。要列印%需要%%。printf()的轉換說明修飾符很多而且很強大很靈活。轉換的意義在於,它把儲存在電腦中的二進位格式的數值轉換成一系列字元以便於顯示。此處的“轉換”可以理解為“翻譯”。

  4.4.4節重點講了不匹配的轉換,涉及到很多電腦底層知識。特別是參數傳遞的工作原理:電腦把變數的值放置到堆棧,但是在讀取時是根據轉換說明符去讀取。

  另外,printf()傳回值是所列印的字元的數目。

  2.scanf()。scanf()是print()的逆向操作,它把輸入的字串轉換成各種形式:整數,浮點數,字元和字串。而printf()是把這些形式轉換成要在螢幕上顯示的文本。scanf()使用指向變數的指標。如果要讀取某種基本變數類型的值,在變數名加上一個&;如果讀取一個字串到字元數組,不用&。scanf()返回成功讀入項目的個數。

  

這章內容比較多,特別是細節。沒必要全部背下來,以後的實踐中再去熟悉。

編程練習和上一章的類似,都是printf()和scanf()的練習。

 

to be continued...

 

C primer plus 讀書筆記第四章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.