11 2字串輸入

2022-09-20 12:21:13 字數 1207 閱讀 4253

如果想把乙個字串讀入程式,首先必須預留儲存該字串的空間,然後用輸入函式獲取該字串

程式不會在讀取字串時計算它的長度再分配空間,所以要先分配足夠的空間

char *name

scanf("%s",name)

scanf要把資訊拷貝至引數指定的地方,但是此時該引數是個未初始化的指標,name可能會指向任何地方

解決辦法是在宣告時指明陣列的大小

char name[81]

現在name是乙個已經分配塊(81位元組)的位址

在讀取字串時,scanf和轉換說明%s只能讀取乙個單詞,可是在程式中經常要讀取一整行輸入

gets函式就用於處理這種情況,能讀取整行輸入,知道遇到換行符,然後丟棄換行符,讀取其他字元,並且在這些字元的末尾新增乙個空字元使其稱為乙個c字串

#include #define stlen 81int main(void)//宣告定義陣列空間

1.fgets函式

fgets函式通過2個引數限制讀入的字元來解決溢位的問題

fgets函式的第二個引數指明了讀入字元的最大數量

如果fgets讀到乙個換行符,那會儲存在字串中

fgets的第三個引數指明要讀入的檔案,讀入從鍵盤輸入的資料,則以stdin作為引數

2.gets_s

gets_s只從標準輸入中讀取資料,所以不需要第三個引數

讀到換行符,會丟棄它而不是儲存它

scanf和gets或fgets的區別是他們如何確定字串的末尾

#define a 10

void getnchar(char b, int n);//建立儲存函式和儲存的陣列

int main(int argc, char* ar**)

void getnchar(char b, int n)

b[i] = '\0';

return;

}

#define a 10

void getnchar(char b, int n);

int main(int argc, char* ar**)

void getnchar(char b, int n)

}b[i] = '\0';

return;

}

2017 6 17 字串輸入

我們要在螢幕上輸出連續的字串,首先要建立訊息響應函式wm onchar,此函式是用來讀取鍵盤輸入的字串。接下來新增變數 m strline 來儲存輸入的字串,m strline 是屬於cstring類的。通過if語句 分別響應回車鍵 退格鍵和其他字元。void ctextview onchar ui...

c 11 2 字串 向量和陣列

標頭檔案不應該包含using宣告,防止名字衝突 string 定義在命名空間std中。初始化string物件方式 string s1 string s2 s1 string s2 s1 string s3 value string s3 value string s4 n,c s4初始化成由n個字元...

10 2字串輸入與輸出

訪問字串的單個字元 ptr i str i str i 用來訪問字串中的第i 1個字元。注意 對於陣列名str,不能使用str 操作使其指向字串中的某個字元,因為陣列名是乙個位址常量,其值不能被改變。字串的輸入和輸出 第一種 for i 0 i 10 i for i 0 i 10 str i 0 i...