在C語言中,使用scanf
函數讀取字符時,可以通過限制格式說明符的長度來間接限制輸入長度。具體來說,可以使用%c
格式說明符配合scanf
的寬度限定符來限制輸入長度。
例如,如果希望限制輸入一個長度為10的字符串,可以這樣做:
char str[11]; // 注意,數組大小需要比字符串長度多1,以便存儲結束符'\0'
int n = scanf("%10c", str); // 讀取最多10個字符
if (n == 10) {
str[n] = '\0'; // 確保字符串以結束符'\0'結尾
printf("輸入的字符串是: %s\n", str);
} else {
printf("輸入的長度不足10個字符\n");
}
在這個例子中,%10c
表示讀取最多10個字符。如果輸入的字符數少于10個,scanf
會返回實際讀取的字符數。如果輸入的字符數達到或超過10個,scanf
會繼續讀取直到遇到空白字符(空格、制表符或換行符)為止,并在第11個位置寫入結束符\0
,從而將字符串終止。
需要注意的是,這種方法只能限制讀取的字符數,而不能確保讀取的字符串不包含空格或其他空白字符。如果需要讀取包含空格的字符串,可以使用%9s
格式說明符(假設字符串長度最多為9)配合scanf
的寬度限定符,并在讀取后手動添加結束符\0
。例如:
char str[10]; // 數組大小比字符串長度多1
int n = scanf("%9s", str); // 讀取最多9個字符,不包括結束符'\0'
if (n > 0) {
str[n] = '\0'; // 確保字符串以結束符'\0'結尾
printf("輸入的字符串是: %s\n", str);
} else {
printf("沒有輸入任何字符\n");
}
在這個例子中,%9s
表示讀取最多9個字符,不包括結束符\0
。由于scanf
不會自動添加結束符,因此需要在讀取后手動將其添加到字符串的末尾。