我試圖把字符數組中輸入: 我的代碼是:輸入字符用C
for(i=0;i<n ;i++)
{
b[i]= getchar();// scanf("%c",&b[i]) ;// scanf("%c" , v=getchar());
}
我沒有收到任何輸入。任何人都可以提醒我嗎?
我試圖把字符數組中輸入: 我的代碼是:輸入字符用C
for(i=0;i<n ;i++)
{
b[i]= getchar();// scanf("%c",&b[i]) ;// scanf("%c" , v=getchar());
}
我沒有收到任何輸入。任何人都可以提醒我嗎?
當您輸入一個字符後跟一個輸入時,有2個字符,因此可以通過使用忽略換行符。 ;
scanf(" %c",&b[i];
使用getchar函數如果按下輸入字符也存儲到在該位置應使用的scanf( 「%C」,& B [I]),該陣列%C
之前空間
如果您試圖用文本行中的字符填充字符數組,則scanf
是適合該作業的工具。正如其他人提到的那樣,您必須確保newline
字符'\n'
(即由按[enter]
產生的結果)從輸入緩衝區中刪除,或者您嘗試獲得的下一個輸入將會跳過(它會將'\n'
保留爲您的預期輸入) 。
對於簡單的文本行,scanf
是正確的選擇。但是,您必須提供將消耗newline
的正確format string
,否則您將需要手動清空輸入緩衝區。下面是做這件事的一種方式的示例:
#include <stdio.h>
int main() {
char b[50] = {0}; /* always initialize your variables */
int i = 0;
printf ("\n Enter all characters for your array: ");
scanf ("%[^\n]%*c", b); /* read array b from stdin, discard the newline */
printf ("\n You entered: '%s'\n\n", b);
while (b[i]) {
printf (" b[%2d] : %c\n", i, b[i]);
i++;
}
return 0;
}
使用/輸出:
$ ./bin/scanfbasic
Enter all characters for your array: These are the chars in b.
You entered: 'These are the chars in b.'
b[ 0] : T
b[ 1] : h
b[ 2] : e
b[ 3] : s
b[ 4] : e
b[ 5] :
b[ 6] : a
b[ 7] : r
b[ 8] : e
b[ 9] :
b[10] : t
b[11] : h
b[12] : e
b[13] :
b[14] : c
b[15] : h
b[16] : a
b[17] : r
b[18] : s
b[19] :
b[20] : i
b[21] : n
b[22] :
b[23] : b
b[24] : .