2017-10-28 247 views
1

我想從字符輸入連接strings從字符輸入連接字符串

我想用戶將按字符鍵入char,直到EOF然後我想要編寫我的string

所以目前如果鍵入char爲exapmle「R」打enter並按Control + D(我工作在Ubuntu)這就是我看到我的屏幕上:

r 
r 
� 

這是我的計劃:

#include <stdio.h> 
#include <string.h> 

int main() 
{ 
    char c = 0; 
    char str[127] = {'\0'}; 
    while (c != EOF) 
    { 
     c = getchar(); 
     strncat(str, &c, 1); 
    } 

    printf("%s\n", str); 

    return 1; 
} 
+3

'EOF'不是字符。 'getchar'返回int是有原因的。 – melpomene

+1

如果它檢測到換行符「\ n」和「EOF」,代碼將更加用戶友好。你應該建立一個''\ 0''終止的字符串傳遞給'strncat'。 –

回答

4

兩個問題在這裏:

  • getchar()返回int。所以c也應該是int,否則它可能無法存儲EOF

  • 在第一次迭代中,代碼試圖連接到未初始化的str。這樣做會調用未定義的行爲。

+0

所以我需要在這裏改變? (在char c到int c之間) – user979033

+0

@ user979033:「* ... to'str'這是未初始化的。*」 – alk

+0

我可以請代碼示例嗎? – user979033