在C語言中,scanf
函數在讀取字符時,默認情況下會跳過空格和換行符。這意味著,如果你使用scanf
來讀取字符串,空格和換行符會被自動忽略,而不會被存儲在字符串中。
例如,以下代碼將讀取一個字符串,但只會存儲字母和數字,而忽略空格和換行符:
char str[100];
scanf("%99[^
]", str); // 注意這里的字符串格式說明符,它表示讀取任意數量的非換行字符,但不超過99個
然而,如果你想要在讀取字符時包括空格和換行符,你可以使用getchar
函數逐個字符地讀取輸入,直到遇到換行符或EOF。例如:
char ch;
while ((ch = getchar()) != '\n' && ch != EOF) {
// 處理字符ch,包括空格和換行符
}
另外,如果你想要在讀取字符串時包括空格和換行符,但又不希望它們被自動忽略,你可以使用fgets
函數。fgets
會讀取一行輸入,包括其中的空格和換行符,并將其存儲在指定的字符數組中。例如:
char str[100];
fgets(str, sizeof(str), stdin); // 讀取一行輸入,包括空格和換行符
需要注意的是,fgets
會在讀取到換行符時停止,并將換行符也存儲在字符串中。如果你不希望換行符被存儲,可以在讀取字符串后進行字符串處理,例如使用strcspn
函數來去除換行符。