你必須知道的213個(gè)C語言問題

出版時(shí)間:2010-6  出版社:人民郵電出版社  作者:范立鋒,李世欣 編著  頁數(shù):340  
Tag標(biāo)簽:無  

前言

  C語言是目前國內(nèi)外使用最廣泛的程序設(shè)計(jì)語言之一。該語言具有簡潔、表達(dá)能力強(qiáng)、使用靈活、程序執(zhí)行效率高和數(shù)據(jù)結(jié)構(gòu)豐富等特點(diǎn),既有高級(jí)語言的特征,又涵蓋了匯編語言的功能,有較強(qiáng)的系統(tǒng)處理能力。通過使用C語言,開發(fā)人員可以直接實(shí)現(xiàn)對(duì)操作系統(tǒng)硬件和外部接口的控制?! AQ是英文“Frequently Asked Questions”的縮寫,意思是“經(jīng)常問到的問題”或“常見問題解答”。本書以C語言為背景,精編了213個(gè)FAQ,為讀者解決學(xué)習(xí)與使用C語言時(shí)經(jīng)常遇到的各種疑難,并結(jié)合實(shí)際開發(fā)給出解決這些問題的建議?! ≈R(shí)體系結(jié)構(gòu)  C語言知識(shí)體系結(jié)構(gòu)如下圖所示?! ”緯Y(jié)構(gòu)  全書共分為12章,主要包含內(nèi)容如下表所示?! ”緯攸c(diǎn)  目前市場(chǎng)上C語言相關(guān)圖書很多,但以問答形式介紹C語言的特點(diǎn)與關(guān)鍵技術(shù)的書籍確實(shí)很少。筆者設(shè)計(jì)每個(gè)問答時(shí),根據(jù)技術(shù)難度的不同加以標(biāo)識(shí),并給出在實(shí)際開發(fā)中的處理意見?! AQ的核心內(nèi)容如下?! 栴}詳述——將問題所涉及的背景、情況、需求及狀況等信息進(jìn)行詳細(xì)的描述?! 『诵慕獯稹o出問題的解決辦法和滿足需求的解決方案,并做適當(dāng)延伸,使讀者獲得更多的知識(shí)?! ∫呻y點(diǎn)評(píng)——對(duì)問題的特點(diǎn)進(jìn)行詳細(xì)說明,并給出處理此問題的注意事項(xiàng)?! ×己玫木幊塘?xí)慣——是筆者根據(jù)多年的軟件研發(fā)經(jīng)驗(yàn)總結(jié)出來的。開發(fā)時(shí)需要注意的事項(xiàng)和小竅門有助于提高開發(fā)效率。  知識(shí)鏈接——指明了當(dāng)前FAQ與相關(guān)知識(shí)點(diǎn)的FAQ的鏈接。

內(nèi)容概要

本書精選了213個(gè)在C語言程序設(shè)計(jì)中經(jīng)常遇到的問題,目的是幫助讀者解決在C語言學(xué)習(xí)和開發(fā)中遇到的實(shí)際困難,提高讀者學(xué)習(xí)和開發(fā)的效率。這些問題涵蓋了C語言與軟件開發(fā)、C語言基礎(chǔ)、編譯預(yù)處理、字符串、函數(shù)、鍵盤操作、文件、目錄和磁盤、數(shù)組、指針和結(jié)構(gòu)、DOS服務(wù)和BIOS服務(wù)、日期和時(shí)間、重定向I/O和進(jìn)程命令、C語言開發(fā)常見錯(cuò)誤及程序調(diào)試等內(nèi)容,均是作者經(jīng)過充分的調(diào)研,從實(shí)際項(xiàng)目開發(fā)中總結(jié)出來的典型問題,濃縮了作者多年從事開發(fā)工作的心得體會(huì)和經(jīng)驗(yàn)教訓(xùn),對(duì)初學(xué)者具有重要的參考價(jià)值。書中每節(jié)都提供了程序設(shè)計(jì)的示例代碼。本書適合已經(jīng)初步掌握C語言編程概念和用法的讀者閱讀。

書籍目錄

第1章 C語言與軟件開發(fā)  FAQ1.01 C語言有哪些特點(diǎn)?  FAQ1.02 C語言與C++語言及VC++比較有什么優(yōu)勢(shì)?  FAQ1.03 如何安裝Turbo C++ 3.0?  FAQ1.04 C語言的編譯環(huán)境有哪些?  FAQ1.05 如何使用Turbo C++ 3.0開發(fā)C語言程序? 第2章 C語言基礎(chǔ)  FAQ2.01 C語言的開發(fā)流程是怎樣的?  FAQ2.02 典型的C程序是怎樣構(gòu)成的?  FAQ2.03 如何在新的一行輸出結(jié)果?  FAQ2.04 如何應(yīng)對(duì)開發(fā)過程中遇到的語法錯(cuò)誤?  FAQ2.05 如何理解C語言中的變量?  FAQ2.06 一個(gè)變量可以既被聲明為變量又被聲明為常量嗎?  FAQ2.07 C語言中的變量包含哪些類型?這些類型是如何表示的?  FAQ2.08 如何自定義類型?  FAQ2.09 如何理解數(shù)據(jù)溢出?  FAQ2.10 什么時(shí)候可以應(yīng)用類型轉(zhuǎn)換?什么時(shí)候不能應(yīng)用?  FAQ2.11 不同類型的數(shù)據(jù)進(jìn)行運(yùn)算時(shí)會(huì)出現(xiàn)什么問題?  FAQ2.12 C語言提供了哪些運(yùn)算符?運(yùn)算符的優(yōu)先級(jí)和結(jié)合性是怎樣的?  FAQ2.13 如何理解C語言中的頭文件?  FAQ2.14 為什么需要加入程序注釋?  FAQ2.15 聲明的變量和定義的變量有什么不同之處?  FAQ2.16 什么情況下要用到switch語句?如何使用switch語句?  FAQ2.17 在一個(gè)switch語句中,default語句是否必須存在呢?  FAQ2.18 for語句的3個(gè)子語句是否都是必須存在的?  FAQ2.19 如何區(qū)分break和continue?  FAQ2.20 如何使用goto語句提高程序靈活性?  FAQ2.21 “&”與“&&”,“|”與“||”有什么區(qū)別?  FAQ2.22 已經(jīng)有了for循環(huán),為什么還要用while循環(huán)?  FAQ2.23 如何強(qiáng)制操作符的運(yùn)算順序? 第3章 編譯預(yù)處理  FAQ3.01 如何理解C語言中的宏?如何使用宏?  FAQ3.02 標(biāo)準(zhǔn)的預(yù)定義宏包括哪些?  FAQ3.03 如何改變預(yù)處理器的行計(jì)數(shù)?  FAQ3.04 宏與函數(shù)有什么區(qū)別?  FAQ3.05 如何自定義頭文件?  FAQ3.06 頭文件都包含哪些信息?  FAQ3.07 文件包含命令可以嵌套嗎?  FAQ3.08 如何避免多次包含同一個(gè)文件?  FAQ3.09 除了.h文件以外其他文件能被#include命令所包含嗎?  FAQ3.10 #include文件名和#include“文件名”有何不同?  FAQ3.11 如何進(jìn)行條件編譯預(yù)處理?  FAQ3.12 如何創(chuàng)建自定義宏?  FAQ3.13 宏有類型嗎?  FAQ3.14 如何重寫一個(gè)定義好的宏?  FAQ3.15 使用枚舉和使用#define定義常量有什么不同? 第4章 字符串  FAQ4.01 C語言是如何存儲(chǔ)字符串的?  FAQ4.02 如何判斷字符串的長度?  FAQ4.03 如何判斷兩個(gè)字符串是否相同?  FAQ4.04 如何將一個(gè)字符串的內(nèi)容追加到另一個(gè)字符串中?  FAQ4.05 如何為字符串追加N個(gè)字符?  FAQ4.06 如何將一個(gè)字符串復(fù)制到另一個(gè)字符串中?  FAQ4.07 如何在比較字符串時(shí)忽略字符大小寫?  FAQ4.08 如何轉(zhuǎn)換字符串中字符的大小寫?  FAQ4.09 如何獲取字符串中首次與末次出現(xiàn)某個(gè)字符的位置?  FAQ4.10 如何計(jì)算一個(gè)字符在字符串中出現(xiàn)的次數(shù)?  FAQ4.11 如何將字符串轉(zhuǎn)換為數(shù)字?  FAQ4.12 如何將數(shù)字轉(zhuǎn)換為字符串?  FAQ4.13 如何判斷字符是何種類型? 第5章 函數(shù)  FAQ5.01 如何理解C語言中的函數(shù)?  FAQ5.02 如何理解函數(shù)原型?  FAQ5.03 形參和實(shí)參分別是什么?如何使用它們?  FAQ5.04 如何解決自定義函數(shù)與庫函數(shù)命名沖突問題?  FAQ5.05 如何理解函數(shù)的開銷問題?  FAQ5.06 主調(diào)函數(shù)如何調(diào)用被調(diào)函數(shù)?  FAQ5.07 return和exit有什么不同之處?  FAQ5.08 局部變量和全局變量有何區(qū)別?  FAQ5.09 當(dāng)局部變量與全局變量發(fā)生名稱沖突時(shí)如何解決?  FAQ5.10 如何更好地定義全局變量的有效范圍?  FAQ5.11 如何理解傳值調(diào)用?  FAQ5.12 C語言支持傳址調(diào)用嗎?  FAQ5.13 為什么要用到靜態(tài)變量?靜態(tài)變量何時(shí)被初始化?  FAQ5.14 如何理解遞歸函數(shù)?什么情況下要用到遞歸?  FAQ5.15 使用遞歸函數(shù)時(shí)對(duì)程序的執(zhí)行效率有何影響?  FAQ5.16 如何使用其他方法代替遞歸?  FAQ5.17 函數(shù)如何對(duì)字符串進(jìn)行堆棧處理?  FAQ5.18 如何使用外部變量及外部靜態(tài)變量?  FAQ5.19 如何調(diào)用結(jié)構(gòu)和基指針?  FAQ5.20 如何在C程序中調(diào)用匯編語言函數(shù)并獲得匯編語言函數(shù)返回值?  FAQ5.21 如何創(chuàng)建支持多參數(shù)多類型的函數(shù)?  FAQ5.22 內(nèi)部函數(shù)和外部函數(shù)有什么不同? 第6章 鍵盤操作  FAQ6.01 如何從鍵盤讀入字符?  FAQ6.02 如何使用緩沖輸入?  FAQ6.03 如何使用直接I/O讀入字符?  FAQ6.04 如何實(shí)現(xiàn)不顯示字符的鍵盤輸入?  FAQ6.05 如何實(shí)現(xiàn)直接輸出?  FAQ6.06 如何將按鍵放回鍵盤緩存?  FAQ6.07 為什么直接I/O能夠更快地輸出字符串?  FAQ6.08 如何更快地從鍵盤輸入字符串?  FAQ6.09 如何實(shí)現(xiàn)定位光標(biāo)的屏幕輸出?  FAQ6.10 如何在屏幕中插入空行?  FAQ6.11 如何將屏幕上的文本復(fù)制到緩沖區(qū)?  FAQ6.12 如何判斷文本模式設(shè)置?  FAQ6.13 如何控制文本顏色?  FAQ6.14 如何指定背景顏色?  FAQ6.15 如何控制文本的顯示亮度?  FAQ6.16 如何在屏幕上移動(dòng)文本? 第7章 文件、目錄和磁盤  FAQ7.01 如何理解FILE結(jié)構(gòu)?  FAQ7.02 如何打開文件?如何關(guān)閉文件?  FAQ7.03 如何實(shí)現(xiàn)每次讀/寫文件信息的一個(gè)字符?  FAQ7.04 如何判斷當(dāng)前文件位置?  FAQ7.05 文本模式和二進(jìn)制模式有什么區(qū)別?  FAQ7.06 如何使用低級(jí)和高級(jí)文件的I/O?  FAQ7.07 如何理解文件句柄?  FAQ7.08 進(jìn)程文件表有什么作用?  FAQ7.09 如何獲取進(jìn)程文件表的入口?  FAQ7.10 如何獲取并顯示系統(tǒng)文件表的信息?  FAQ7.11 如何從流指針中導(dǎo)出文件句柄?  FAQ7.12 如何重命名文件?  FAQ7.13 如何刪除文件?  FAQ7.14 如何判斷程序訪問文件?  FAQ7.15 如何設(shè)置文件訪問模式?  FAQ7.16 如何檢測(cè)文件流錯(cuò)誤?  FAQ7.17 如何判斷文件長度?  FAQ7.18 如何使用臨時(shí)文件?  FAQ7.19 如何搜索環(huán)境入口的子目錄?  FAQ7.20 為什么要盡量減少文件的I/O操作?  FAQ7.21 對(duì)目錄的操作有哪些?如何實(shí)現(xiàn)?  FAQ7.22 如何刪除目錄樹?  FAQ7.23 如何列出一個(gè)目錄中的所有文件?  FAQ7.24 如何建立完全路徑名?  FAQ7.25 如何分解目錄路徑?  FAQ7.26 如何使用低級(jí)函數(shù)打開和關(guān)閉文件?  FAQ7.27 如何打開20個(gè)以上的文件?  FAQ7.28 如何改變文件長度?  FAQ7.29 如何控制文件打開操作的讀寫模式?  FAQ7.30 如何將緩沖區(qū)賦給文件?  FAQ7.31 如何分配文件緩沖區(qū)?  FAQ7.32 如何創(chuàng)建唯一文件名?  FAQ7.33 如何從文件流中讀取結(jié)構(gòu)數(shù)據(jù)?  FAQ7.34 如何復(fù)制文件句柄?  FAQ7.35 如何強(qiáng)制文件句柄設(shè)置?  FAQ7.36 如何實(shí)現(xiàn)文件共享?  FAQ7.37 如何鎖定文件內(nèi)容?  FAQ7.38 textcopy是否能夠復(fù)制二進(jìn)制文件?  FAQ7.39 如何讀取格式化的文件數(shù)據(jù)?  FAQ7.40 如何重新打開文件流? 第8章 數(shù)組、指針和結(jié)構(gòu)  FAQ8.01 數(shù)組的下標(biāo)總是從零開始嗎?  FAQ8.02 越界的數(shù)組元素是否依然有效?  FAQ8.03 瀏覽數(shù)組元素時(shí),使用指針和使用數(shù)組下標(biāo)有什么區(qū)別?  FAQ8.04 為什么不能將數(shù)組大小初始化為一個(gè)常量?  FAQ8.05 數(shù)組與動(dòng)態(tài)存儲(chǔ)孰優(yōu)孰劣?  FAQ8.06 如何理解多維數(shù)組?  FAQ8.07 C語言是如何存放多維數(shù)組的?  FAQ8.08 可以在程序運(yùn)行時(shí)才去聲明數(shù)組的長度嗎?  FAQ8.09 如何使用結(jié)構(gòu)數(shù)組?  FAQ8.10 如何理解聯(lián)合?  FAQ8.11 使用聯(lián)合是否能夠節(jié)省內(nèi)存?  FAQ8.12 如何使用位字段結(jié)構(gòu)?  FAQ8.13 是否可以對(duì)指針進(jìn)行類型轉(zhuǎn)換?  FAQ8.14 兩次釋放同一指針會(huì)產(chǎn)生什么結(jié)果?  FAQ8.15 指針占用的內(nèi)存空間是否與基類型有關(guān)?  FAQ8.16 什么是空指針?哪些情況會(huì)用到空指針?  FAQ8.17 使用指針變量操作字符串和使用字符數(shù)組操作字符串有什么不同?  FAQ8.18 如何將指針操作作為函數(shù)參數(shù)?  FAQ8.19 指針函數(shù)和函數(shù)指針分別是什么?  FAQ8.20 指針如何進(jìn)行運(yùn)算?  FAQ8.21 如何將指針作為函數(shù)返回值?  FAQ8.22 如何使用指向字符串指針的指針?  FAQ8.23 最多可以使用多少級(jí)指針?  FAQ8.24 為什么使用結(jié)構(gòu)?如何聲明結(jié)構(gòu)?  FAQ8.25 C語言如何為結(jié)構(gòu)分配內(nèi)存空間?  FAQ8.26 free()函數(shù)如何決定到底釋放多大的內(nèi)存空間?  FAQ8.27 如何使用結(jié)構(gòu)作為函數(shù)參數(shù)?  FAQ8.28 如何使用指向結(jié)構(gòu)體的指針?  FAQ8.29 結(jié)構(gòu)體和共用體有哪些異同點(diǎn)? 第9章 DOS服務(wù)和BIOS服務(wù)  FAQ9.01 如何理解DOS服務(wù)和BIOS服務(wù)?  FAQ9.02 如何理解寄存器?  FAQ9.03 如何理解軟件中斷?  FAQ9.04 如何使用BIOS訪問指針?  FAQ9.05 如何暫時(shí)掛起程序?  FAQ9.06 如何控制聲音?  FAQ9.07 如何應(yīng)用BIOS鍵盤服務(wù)?  FAQ9.08 如何獲取BIOS設(shè)備列表?  FAQ9.09 如何控制串行接口的I/O?  FAQ9.10 如何判斷BIOS常規(guī)內(nèi)存數(shù)量?  FAQ9.11 如何分配動(dòng)態(tài)內(nèi)存?  FAQ9.12 動(dòng)態(tài)分配的內(nèi)存空間會(huì)被自動(dòng)釋放嗎?  FAQ9.13 malloc()與calloc()函數(shù)的區(qū)別?  FAQ9.14 如何解決64KB堆的限制?  FAQ9.15 如何從堆棧中分配內(nèi)存?  FAQ9.16 如何改變被分配內(nèi)存區(qū)域的大?。俊〉?0章 日期與時(shí)間  FAQ10.01 如何使用單個(gè)數(shù)字存儲(chǔ)日期信息?必須遵循什么標(biāo)準(zhǔn)?  FAQ10.02 如何獲取當(dāng)前的日期與時(shí)間?  FAQ10.03 如何判斷程序的耗時(shí)?  FAQ10.04 如何設(shè)置DOS系統(tǒng)時(shí)間與系統(tǒng)日期?  FAQ10.05 如何讀取BIOS計(jì)時(shí)器?  FAQ10.06 如何獲取與設(shè)置系統(tǒng)日期以及系統(tǒng)時(shí)間?  FAQ10.07 如何處理日期與字符串之間的轉(zhuǎn)換?  FAQ10.08 如何創(chuàng)建格式化日期與時(shí)間串? 第11章 重定向I/O與進(jìn)程命令行  FAQ11.01 如何編寫密碼函數(shù)?  FAQ11.02 如何使用輸入/輸出重定向?  FAQ11.03 如何使用管道運(yùn)算符?  FAQ11.04 如何自定義more命令?  FAQ11.05 如何防止I/O重定向?  FAQ11.06 如何應(yīng)用STDPRN文件句柄?  FAQ11.07 如何將重定向輸出分割到一個(gè)文件中?  FAQ11.08 如何應(yīng)用STDAUX文件句柄?  FAQ11.09 如何使用命令行變?cè)??  FAQ11.10 如何從命令行中顯示文件內(nèi)容?  FAQ11.11 如何創(chuàng)建定時(shí)的more命令?  FAQ11.12 如何在重定向輸入內(nèi)尋找字串?  FAQ11.13 如何指定重定向輸入顯示行數(shù)?  FAQ11.14 如何定義在程序結(jié)束時(shí)執(zhí)行的函數(shù)? 第12章 C語言開發(fā)常見錯(cuò)誤及程序調(diào)試  FAQ12.01 使用C語言開發(fā)會(huì)遇到哪些常見錯(cuò)誤?  FAQ12.02 程序調(diào)試包括哪幾步?  FAQ12.03 如何使用編譯工具找出錯(cuò)誤信息對(duì)應(yīng)代碼位置?  FAQ12.04 如何檢測(cè)內(nèi)存漏洞?  FAQ12.05 如何讓程序發(fā)送失敗報(bào)告?  FAQ12.06 哪些原因會(huì)導(dǎo)致運(yùn)行的程序掛起?  FAQ12.07 沒有聲明函數(shù)原型會(huì)造成怎樣的結(jié)果?  FAQ12.08 函數(shù)參數(shù)的個(gè)數(shù)有限制嗎?  FAQ12.09 exit()函數(shù)與return語句有什么不同嗎?  FAQ12.10 return語句是必須存在的嗎?  FAQ12.11 退出main()函數(shù)就意味著程序運(yùn)行的結(jié)束嗎? 

章節(jié)摘錄

  1.代碼復(fù)用  C語言使用函數(shù)庫或者DLL方式實(shí)現(xiàn)代碼復(fù)用,在接口穩(wěn)定的前提下實(shí)現(xiàn)內(nèi)部修改和數(shù)據(jù)及其實(shí)現(xiàn)的封裝。C++提供了類庫和多種繼承機(jī)制,從而實(shí)現(xiàn)了具有層次的代碼復(fù)用。它同時(shí)通過重載等各種機(jī)制將進(jìn)一步實(shí)現(xiàn)復(fù)用功能,使得類庫和代碼更加容易維護(hù),雖然建立類庫在人員、組織等各個(gè)方面還是比較麻煩的?! ?.效率  C語言在本質(zhì)上擅長底層接口的編寫并且非常注重效率問題;但是事物總是具備矛盾的兩面,過于偏重效率和軟件危機(jī)的出現(xiàn),反而增加了程序設(shè)計(jì)的難度。從現(xiàn)實(shí)世界角度考慮,OOA更加貼近實(shí)際,使得代碼或程序更具備穩(wěn)定性、可擴(kuò)展性和可維護(hù)性?! ?.簡單性  通常情況下,在應(yīng)用程序中C語言更多的要求是設(shè)計(jì)簡單化。例如,C語言不支持類似于繼承的重用,因此為了達(dá)到同樣的目的不得不更多地使用組合,即使使用函數(shù)指針實(shí)現(xiàn)多態(tài),也不可能像C++那樣把類逐層地?cái)U(kuò)展。

編輯推薦

  213個(gè)編程新手最常遇到的C語言問題  菜鳥想問不敢開口  掃除入門者的障礙,開辟成長捷徑  請(qǐng)相信,你并不是第一個(gè)遇到問題的人。  發(fā)現(xiàn)問題,思考問題,尋找答案,解決問題?!  赌惚仨氈赖?13個(gè)C語言問題》內(nèi)容涵蓋:  C語言基礎(chǔ)  編譯預(yù)處理  字符串  函數(shù)  鍵盤操作  文件、目錄和磁盤  數(shù)組、指針和結(jié)構(gòu)  DOS服務(wù)和BIOS服務(wù)  日期與時(shí)間  重定向I/O與進(jìn)程命令  開發(fā)常見錯(cuò)誤及程序調(diào)試

圖書封面

圖書標(biāo)簽Tags

評(píng)論、評(píng)分、閱讀與下載


    你必須知道的213個(gè)C語言問題 PDF格式下載


用戶評(píng)論 (總計(jì)5條)

 
 

  •   一般一般,這本書是給初學(xué)者的。
    內(nèi)容還可以
  •   內(nèi)容挺好,挺豐富,很實(shí)用
  •   可用于圖書館的損害圖書賠償
  •   之前在圖書館借來看,當(dāng)工具書查閱來著
  •   只是都是在***b c下運(yùn)行,沒有vc++下的,確實(shí)很專業(yè),還沒仔細(xì)看!
 

250萬本中文圖書簡介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7