C語言 第十一章第十二章

2021-10-08 10:38:18 字數 1350 閱讀 5840

定義:字串是以空字元為結尾的char型別陣列。

1.字串的輸入

gets()函式

它區別於getchar()函式,getchar()是輸入單個字元,gets()是輸入字串。區別於scanf("%s",a)函式, scanf()只能讀取乙個單詞,gets()讀取整行輸入,直到遇到換行符。

gets()會在顯示的字串末尾自動加上空字元。

2.字串的輸出

puts()函式(他會在現實的字串末尾自動加上空字元)

直接呼叫即可 puts(a);

putchar()函式輸出單個字元(輸出乙個字元後停止輸出)。

scanf(「%s」,a)函式輸出單個單詞(遇到空字元就會停止輸出)。

3.字串輸入\輸出 (gets()和puts()函式) 的代替品

fgets()函式

fputs()函式

gets_s()函式

s_gets()函式

(以上幾種不做介紹,一種操作好幾種函式都可以實現,在c語言中屢見不鮮,先掌握一種即可,等其餘的會遇到的時候再詳細掌握即可)

這幾種輸出輸入會考慮到字串的大小問題,在gets()和puts()函式中會發生溢位。

但是gets()和puts()函式為什麼還存在著,是因為這種溢位可以由程式設計師控制。程式設計師要考慮到定義的字串的大小,在進行輸入\輸出的時候,會不會產生溢位,這樣根據大小設計就可以避免錯誤。

1.儲存類別

(先不關注)

2.分配記憶體

在確定用哪種儲存類別後,根據已制定好的記憶體管理規則,將自動選擇其作用域和儲存期。

還有更靈活的選擇,即使用庫函式分配和管理記憶體。

malloc()函式,它返回動態分配記憶體塊的首位元組位址。

使用malloc建立乙個陣列。除了使用malloc()函式在程式執行時請求一塊記憶體,還需要乙個指標記錄這塊記憶體的位置。

在使用完之後需要使用free()函式釋放掉malloc()函式申請的記憶體。

#includedouble *pi;

pi=(double*)malloc(30*sizeof(double));

free(pi);

為30個double型別的值請求記憶體空間,並設定指標pi指向該位置

3.ansi c型別限定符

const型別限定符

const int *a //a指向的值不可變,a指向的位置可變

int *const a //a指向的位置不可變,a指向的值可變

第十二章 檔案

文字檔案 文字檔案是一種由若干字元構成的檔案,可以用文字編輯器進行閱讀或編輯。以txt py html等為字尾的檔案都是文字檔案。2.二進位制檔案 二進位制檔案一般是指不能用文字編輯器閱讀或編輯的檔案。以 mp4 png等為字尾的檔案都是二進位制檔案,如果想要開啟或修改這些檔案,必須通過特定軟體進行...

第十二章 dp

動態規劃策略 將原始問題拆分為多個子問題,將子問題結果記錄,方便復用子問題的解 遞迴 記憶化 遞推 是動態規劃的一體兩面,本質都是一樣的 遞推減少了呼叫次數,空間上還能優化,一般選擇遞推方式 遞迴 記憶化 int memo maxn 將o 2 n o n intfibonacci int n 遞推 ...

第十二章 異常

一 異常的概念 錯誤 編譯器 異常 執行期,程式沒有正常按照期望執行 異常產生時,在對應位置產生異常型別物件,程式 暫停 如果上下文有異常處理程式,對應處理 沒有則 異常向上傳播 報錯退出 異常向上傳播 如果異常在函式中產生,會傳播給函式的呼叫者 如果異常在模組的頂級位置,會傳播給引用該模組的模組 ...