標準輸入輸出與 MicroLIB:C 語言的終端去了哪裏
推薦《標準輸入輸出與 MicroLIB:C 語言的終端去了哪裏》:作者把經驗掰開揉碎講得很細。下面按要點重新組織一遍,方便你快速抓住重點、用起來。
我以前在電腦上寫 C,調用 printf() 以後,總能在黑色的終端窗口裏看到文字。那時我幾乎不會想到一個問題:文字究竟被送到了哪裏? 換到單片機後,這個問題突然變得明顯。代碼可以成功編譯,也可以成功下載,可是 printf("hello\n"); 沒有任何地方顯示 hello 。如果再試着用 scanf() 讀一個數字,程序甚至像是停住了。 這個時候, printf() 和 scanf() 還在,電腦上那個現成的“終端”卻沒有跟過來。要理解這件事,得先把“函數”和“通道”分開。 電腦上的終端不是 C 語言自帶的 在電腦上運行程序時,操作系統會爲進程準備輸入、輸出和錯誤輸出。鍵盤輸入被接到標準輸入,普通文字被接到標準輸出,錯誤提示通常被接到標準錯誤。
我以前在電腦上寫 C,調用 printf() 以後,總能在黑色的終端窗口裏看到文字。那時我幾乎不會想到一個問題:文字究竟被送到了哪裏? 換到單片機後,這個問題突然變得明顯。代碼可以成功編譯,也可以成功下載,可是 printf("hello\n"); 沒有任何地方顯示 hello 。如果再試着用 scanf() 讀一個數字,程序甚至像是停住了。 這個時候, printf() 和 scanf() 還在,電腦上那個現成的“終端”卻沒有跟過來。要理解這件事,得先把“函數”和“通道”分開。 電腦上的終端不是 C 語言自帶的 在電腦上運行程序時,操作系統會爲進程準備輸入、輸出和錯誤輸出。鍵盤輸入被接到標準輸入,普通文字被接到標準輸出,錯誤提示通常被接到標準錯誤。終端窗口只是操作系統安排好的一個去處。
我以前在電腦上寫 C,調用 printf() 以後,總能在黑色的終端窗口裏看到文字。那時我幾乎不會想到一個問題:文字究竟被送到了哪裏? 換到單片機後,這個問題突然變得明顯。代碼可以成功編譯,也可以成功下載,可是 printf("hello\n"); 沒有任何地方顯示 hello 。如果再試着用 scanf() 讀一個數字,程序甚至像是停住了。 這個時候, printf() 和 scanf() 還在,電腦上那個現成的“終端”卻沒有跟過來。要理解這件事,得先把“函數”和“通道”分開。 電腦上的終端不是 C 語言自帶的 在電腦上運行程序時,操作系統會爲進程準備輸入、輸出和錯誤輸出。鍵盤輸入被接到標準輸入,普通文字被接到標準輸出,錯誤提示通常被接到標準錯誤。終端窗口只是操作系統安排好的一個去處。 所以這段代碼真正表達的意思不是“把文字畫到屏幕上”: [代碼示例略] 這更像是格式化一段文字,然後把這段文字交給標準輸出通道。
我以前在電腦上寫 C,調用 printf() 以後,總能在黑色的終端窗口裏看到文字。那時我幾乎不會想到一個問題:文字究竟被送到了哪裏? 換到單片機後,這個問題突然變得明顯。代碼可以成功編譯,也可以成功下載,可是 printf("hello\n"); 沒有任何地方顯示 hello 。如果再試着用 scanf() 讀一個數字,程序甚至像是停住了。 這個時候, printf() 和 scanf() 還在,電腦上那個現成的“終端”卻沒有跟過來。要理解這件事,得先把“函數”和“通道”分開。 電腦上的終端不是 C 語言自帶的 在電腦上運行程序時,操作系統會爲進程準備輸入、輸出和錯誤輸出。鍵盤輸入被接到標準輸入,普通文字被接到標準輸出,錯誤提示通常被接到標準錯誤。終端窗口只是操作系統安排好的一個去處。 所以這段代碼真正表達的意思不是“把文字畫到屏幕上”: [代碼示例略] 這更像是格式化一段文字,然後把這段文字交給標準輸出通道。至於通道另一端是終端窗口、文件,還是別的程序,由運行環境決定。
我以前在電腦上寫 C,調用 printf() 以後,總能在黑色的終端窗口裏看到文字。那時我幾乎不會想到一個問題:文字究竟被送到了哪裏? 換到單片機後,這個問題突然變得明顯。代碼可以成功編譯,也可以成功下載,可是 printf("hello\n"); 沒有任何地方顯示 hello 。如果再試着用 scanf() 讀一個數字,程序甚至像是停住了。 這個時候, printf() 和 scanf() 還在,電腦上那個現成的“終端”卻沒有跟過來。要理解這件事,得先把“函數”和“通道”分開。 電腦上的終端不是 C 語言自帶的 在電腦上運行程序時,操作系統會爲進程準備輸入、輸出和錯誤輸出。鍵盤輸入被接到標準輸入,普通文字被接到標準輸出,錯誤提示通常被接到標準錯誤。終端窗口只是操作系統安排好的一個去處。 所以這段代碼真正表達的意思不是“把文字畫到屏幕上”: [代碼示例略] 這更像是格式化一段文字,然後把這段文字交給標準輸出通道。至於通道另一端是終端窗口、文件,還是別的程序,由運行環境決定。 scanf() 也是同樣的道理:它沒有直接從鍵盤讀取變量,而是嘗試從標準輸入通道獲得字符,再把字符解釋成數字或文字。
建議先收藏再實操:挑其中一個點今天就試試,跑通了再看下一個。知識只有過手纔是你的,你準備先試哪一點? 來源|博客園《標準輸入輸出與 MicroLIB:C 語言的終端去了哪裏》,https://www.cnblogs.com/zw-awa/p/22971849.html
評論(0)
暫無評論,來搶第一條。