a. 分配記憶體空間
a. 靜態記憶體分配
○ 指的是在編譯時確定陣列等資料型別的大小,然後由計算機分配好
○ 在宣告陣列時要顯式的宣告陣列的大小,為字串的輸入分配記憶體空間
○ char name[81];
b. 動態記憶體分配
○ 通俗一點就是向計算機要記憶體空間,是在程式執行時,再向計算機要記憶體
○ 一般是用malloc函式
§ #include§ void* malloc(size_t size);
§ 利用malloc申請到的記憶體空間是以位元組為單位的,返回的結果是void *,一般需要型別轉換為自己需要的型別號
int *a;
a=(int*)malloc(n*sizeof(int)); //本語句的意思就是通過malloc函式向計算機申請一塊記憶體空間,這個空間的大小是
n*sizeof(int),返回的是乙個void*型別的指標,也就是乙個指向未知型別資料的位址,之後再把這個指標轉化為我們需要的型別---int *。
§ 與申請記憶體空間相對應的就是釋放記憶體空間free()
□ free(a);
□ 只能還申請來的空間的首位址
§ 如果申請失敗了就會選擇返回0或者是null
b. gets()
○ gets()函式只是知道分配的記憶體空間的位址,但是不知道分配的記憶體空間有多大,也即是有可能會造成快取區溢位問題
○ 讀取整行資料,直至遇到換行符
○ gets函式會將讀進的換行符丟掉
c. fgets()函式(通常是最佳選擇)
○ fgets(緩衝區位址,讀入字元最大值,提供字串的檔案)
○ fgets()將讀入n-1字元或者遇到第乙個換行符為止
○ fgets把換行符放在字串末尾
○ 該函式函式返回的位址與傳入的第 1 個引數相同
#include
#define size 10
intmain()
puts
("done");
return0;
}//如果讀到檔案結尾或者空行時就會退出
//在本例中,fgets的返回值一直都不是null
//fgets()讀取字元為(size-1)個即停止,或者讀取到第乙個『\n』即可
○ fputs(資料**,要寫入的檔案)
○ fputs知道資料**和資料要寫入到哪個檔案,如果是寫入到控制台,則用stdout
○ 資料**有什麼就會寫什麼,不會自動新增換行符
d. gets_s()函式也可以用於替代gets
○ gets_s(argu1,argu2)
§ argu1是儲存位置,argu2是最大字元數
○ 和gets()一樣,讀到換行符時,會把換行符丟棄掉
e. scanf()
○ scanf函式確定字串末尾的方法是
○ 從非空白開始直至遇到第乙個空白字元(包括空行、空格、製表符、換行符)
○ 若指定欄位寬,則將滿足字寬和第乙個空白字元「做或邏輯」--->滿足即可
a. puts(argu1)函式
b. puts函式會在輸出字串的末尾自動加上換行符
c. 遇到空字元就會停止輸出---因此必須確保要有空字元
d. 如果沒有空字元,那麼puts會繼續列印記憶體中後面的字元直至遇到空字元
b. fputs(argu1,argu2)函式
b. 不在末尾新增換行符號
c. printf()函式
a. 不在末尾加換行符號
b. 列印多個字串更加簡單
a. 利用putchar,getchar,while迴圈等自定義輸入輸出函式
C語言中字串的輸入輸出函式例項
c語言學習路線 從入門到實戰 編寫c語言程式的7個步驟和程式設計機制 vs2019編寫簡單的c程式示例 簡單示例,vs2019除錯c語言程式 c語言基礎 基本演算法 c語言基礎 資料型別 字元資料輸出函式putchar c語言中字元資料輸出使用的是putchar 函式,它的作用就是向終端輸出乙個字元...
C語言 字串的輸入 輸出
c語言中沒有字串型別,而是用字元陣列 char a 代替 單字元 c 字串 s 法一 用scanf輸入字串,printf輸出字串 char ch 5 for int i 0 i 5 i for int i 0 i 5 i system pause return 0 法 二 整個字串處理 char c...
字串輸入輸出函式
while gets name null 可檢查檔案是否結尾 while ch getchar eof gets 讀取換行符並將其丟棄,fgets 把換行符存字串裡,但每次顯示字串會顯示換行符 不足之處 fgets 是為檔案i o而設計得,在處理鍵盤輸入時就不如gets 那麼方便。它需要第二個引數來...