2014-12-06 61 views
-2

我試圖把字符數組中輸入: 我的代碼是:輸入字符用C

for(i=0;i<n ;i++) 
    { 
    b[i]= getchar();// scanf("%c",&b[i]) ;// scanf("%c" , v=getchar()); 
    } 

我沒有收到任何輸入。任何人都可以提醒我嗎?

回答

0

當您輸入一個字符後跟一個輸入時,有2個字符,因此可以通過使用忽略換行符。 ;

scanf(" %c",&b[i]; 

使用getchar函數如果按下輸入字符也存儲到在該位置應使用的scanf( 「%C」,& B [I]),該陣列%C

0

如果您試圖用文本行中的字符填充字符數組,則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] : .