2017-10-28 3 views
1

문자 입력에서 strings을 연결하고 싶습니다.문자 입력에서 문자열 연결

사용자가 EOF까지 char로 입력 한 다음 내 string을 pring하고 싶습니다. 내가 exapmle 'R'에 대한 charenter 충돌이 내가 내 화면에 표시되는 내용입니다 (내가 우분투 작업입니다) 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

'EOF'뿐만 아니라'\ n''라는 개행을 발견하면 코드가 더 사용자 친화적 일 것입니다. strncat에 전달하기 위해' '\ 0''종료 문자열을 만들어야합니다. –

답변

4

두 가지 문제 :

  • getchar()int을 반환합니다. 따라서 cint이어야하며 그렇지 않은 경우 EOF을 저장할 수 없습니다.

  • 첫 번째 반복에서 코드는 초기화되지 않은 str에 연결하려고 시도합니다. 이렇게하면 정의되지 않은 동작이 호출됩니다.

+0

그래서 내가 여기서 바꿀 필요가 있니? (char c와 int c) – user979033

+0

@ user979033 : "초기화되지 않은"str "에 *" – alk

+0

코드 예를 들려 줄 수 있습니까? – user979033