我提示用戶輸入一個數組的長度,用這個輸入初始化一個char []數組,然後提示用戶鍵入一個消息進入char []數組。
我正在用getchar()
正在讀取用戶消息的第一個字符。
但是,在讀取任何用戶輸入之前,getchar()
正在讀取新行轉義'\n'
。它似乎越來越'\n'
從以前printf
聲明,提示用戶...
下面是相關代碼:爲什麼在printf語句後getchar()讀取' n'?
#include <stdio.h>
int main(void) {
int len = 0,
originalLen = 0;
printf("\n\nWhat is the length of the array? ");
scanf("%d", &originalLen);
char str[originalLen]; // intitializing the array
printf("Enter a message to enter into the array: ");
char target = getchar();
str[len] = target;
// why is getchar() reading '\n'?
if (target == '\n') {
printf("\n...what happened?\n");
}
return 0;
} // end of main
啊謝謝@Alok,這很有道理 - 它擊中了添加「\ n」字符的ENTER鍵。因爲這個原因'scanf'皺起了眉頭? –
@IanCampbell:對,還有更多。如:*類型安全,輸入驗證等*。在閱讀字符和字符串時應該避免使用它,但可以將它用於簡單的數字輸入。 –
感謝@Alok,有趣......所以對於字符和字符串,scanf是更好的選擇? –