試內(nèi)部命令)
引入fgets函數(shù)函數(shù)原型char *fgets(char *str, int size, FILE *stream);參數(shù)char *str:字符數(shù)組存放讀到的字符串int size最多讀取size-1個字符留 1 位存結束符\0FILE *stream數(shù)據(jù)流。返回值讀取成功返回str地址讀到文件末尾 EOF / 讀取失敗返回NULL作用用于從文件流 / 標準輸入讀取一行字符串鍵盤和文件也是文件鍵盤文件stdin標準輸入屏幕文件stdout標準輸出stderr標準錯誤輸出圖片上代碼在輸入end時應當退出程序為什么輸入end沒有退出程序呢想要找到問題我們可以通過調(diào)試來查找問題。調(diào)試工具gbdtest.c只是文件不是程序test 放到磁盤上叫程序./test 運行起來進程這個是調(diào)試的東西gcc -o test test.c用gcc編譯器編譯 test.c 源代碼生成名為 test的可執(zhí)行程序。不可調(diào)試沒有調(diào)試信息gcc -o test test.c -g生成開發(fā)調(diào)試版本用于 gdb 調(diào)試。編譯的時候加上參數(shù)-g是為了包含調(diào)試信息調(diào)試命令l 顯示代碼 默認打印當前位置前后共 10 行源代碼 l 行號 快速跳轉(zhuǎn)到指定代碼行查看上下文 l filename:行號 快速跳轉(zhuǎn)到指定代碼行查看上下文 b 行號 加斷點b 函數(shù)名字 加斷點info break 顯示斷點信息查看斷點信息r 運行程序只會運行一次n 單步執(zhí)行p 打印變量、表達式、地址c 繼續(xù)執(zhí)行不再單步執(zhí)行s 進入函數(shù)finish 跳出函數(shù)q 退出程序bt 查看函數(shù)調(diào)用的棧函數(shù)補充內(nèi)容主函數(shù)參數(shù)main(int argc, char* argv,char* envp[])argc 參數(shù)個數(shù) argv參數(shù)內(nèi)容 envp環(huán)境變量man 幫助手冊查命令函數(shù)的說明文檔1命令2系統(tǒng)調(diào)用3庫函數(shù)printf()緩沖區(qū)圖片中的程序結果是先睡眠3秒然后打印hello這是為什么呢printf不會立刻把內(nèi)容打到屏幕上會把要打印的內(nèi)容先放到緩沖區(qū)緩沖區(qū)滿了才會打印。緩沖區(qū)什么時候打印到屏幕上呢滿足以下三種情況1.緩沖區(qū)滿了2.強制刷新\n 換行觸發(fā)行緩沖刷新文字立刻打印fflush(stdout) 強制把緩沖區(qū)內(nèi)容輸出到屏幕3.程序要退出了 先刷緩沖區(qū)再退出程序exit()退出進程exit()會執(zhí)行兩步操作1先刷緩沖區(qū)2再調(diào)_exit()退出程序_exit()只退出程序不會刷緩沖區(qū)