2016-09-21 48 views
-4

我想將「char數據類型值」存儲在數組中,但它不起作用。想要在數組中存儲「char值」(使用C語言)

首先,我嘗試使用「獲取」 但它給了我一個運行時錯誤。 代碼是這樣

int tmp = 0; 


    char arr[100] = { 0, }; 
    while (arr[tmp]!=NULL) 
    { 
     gets(arr[tmp]); 
     tmp++; 
    } 
    for (int rtmp = 0; rtmp < a; rtmp++) 
    printf("%s ", arr[rtmp]); 
    return 0; 

在第二種方式中,我用「scanf函數」,但我無法保存「CHAR數據類型(它應該是多於一個字符像字符串)」,但只有一個字符可用。(我試過%s,但它不起作用) 另外,它不打印數組的最後一個值。

int a = 0; 
scanf("%d", &a); //determine how much I input values 

int tmp = 0; 
char arr[100] ={ 0 , }; 
for(tmp=0;tmp<a;tmp++) 
{ 
    scanf("%c ",arr[tmp]); 
    fflush(stdin); 
} 
for (int rtmp = 0; rtmp < a; rtmp++) 
    printf("%c ", arr[rtmp]); 
return 0; 

最「相同的」我是 而不通知的「a」值(「一」是指I輸入多少值) 和在陣列中存儲「char值」 ..

如何能我解決了這個問題? 在此先感謝!您的幫助總是讚賞:)

+5

'的scanf( 「%C」,編曲[TMP]);' - >'的scanf( 「%C」,及改編[TMP]);' – BLUEPIXY

+1

在第一種情況下,你有一個'char'數組,但你試圖將*元素*作爲(指向)'char'數組。 –

+2

'fflush(stdin);'調用未定義的行爲。您無法刷新輸入流。 – Olaf

回答

1

char數據類型的數組稱爲Sting。您可以使用scanf()和gets()來獲取字符串的輸入。但是,如果使用scanf(),則會按空格鍵或Enter鍵輸入字符串。但是如果你使用gets(),只有按下回車鍵才能輸入。

例1:

char s[100]; 
scanf("%s", s); 

例2:現在

char s[100]; 
gets(s); 

,如果你想輸入的每一個字符分別,你能做到這一點也:

char s[100], c; 
    int n, i, j; 
    scanf("%d", &n); 
    getchar(); 
    for(i=0; i<n; i++) { 
     scanf("%c", &s[i]); 
    } 

    s[i] = '\0'; 

現在看,我在scanf("%d", &n);之後寫了一個getchar(),因爲當你按回車鍵之後在n的旁邊的字符中,新的行字符('\ n')也被用作輸入。所以你必須這樣做。

還有一件事,你可以使用scanf()也輸入任何含有空格的字符串。只是這樣做:

char s[100]; 
scanf("%[^\n]", s);