如果想把乙個字串讀入程式,首先必須預留儲存該字串的空間,然後用輸入函式獲取該字串
程式不會在讀取字串時計算它的長度再分配空間,所以要先分配足夠的空間
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...