2017-10-28 5 views
1

stringsを文字入力から連結したいとします。文字入力からの文字列の連結

私はユーザに、EOFまでcharと入力してから、stringを送信したいと思っています。私はexapmle「R」のためcharenterをヒットし、これは私が私の画面に表示されるものである(私はUbuntuの上で働いています)Control + Dを押して入力するのであれば、現在

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」はcharではありません。 'getchar'は理由でintを返します。 – melpomene

+1

改行「\ n」と「EOF」が検出された場合、コードはより使いやすいものになります。 strncatに渡す '\ 0 ''終了文字列を構築する必要があります。 –

答えて

4

2つの問題:

  • getchar()intを返します。したがってcintでなければなりません。それ以外の場合はEOFを保存できないことがあります。

  • 第1回の反復では、コードは連結されずにstrに初期化されません。そうすることで、未定義の動作が呼び出されます。

+0

ここで私は何を変える必要がありますか? (char c〜int cの) – user979033

+0

@ user979033: "* ... to ...' str'は初期化されていません。* " – alk

+0

コード例を教えてください。 – user979033