2014-04-28 2 views
1

그래서 getline을 사용하여 사용자 입력을 읽으려고합니다.이 오류는 사용자가 "Hi there"라고 입력하면 읽습니다. 끝에 줄 바꿈이 있다고 생각합니다. 그래서 인쇄하려고하면 "안녕하세요"라고 인쇄 한 다음 자동으로 다음 줄로갑니다. 다음 줄로 이동하지 못하게하려면 어떻게합니까? 사용자가 입력하는 경우사용자 입력 끝에서 줄 바꿈을 읽습니다.

printf(">"); 
getline(&userinput,&length,stdin); 
printf("userinput:%s",userinput); 
printf("DONE"); 

- - 여기

내 코드입니다 "? 그것이 이루어집니다"

그것은 현재 출력이 -

"Is it done?" 
"DONE" 

하지만 그것은 인쇄 할 - "Is it done?DONE"

어떤 도움을 크게

답변

0

한 가지 방법은 UserInput 사용자가 문자열에서 줄 바꿈을 제거하는 것입니다 감사합니다 :

printf(">"); 
getline(&userinput,&length,stdin); 

char *cp=strchr(userinput, '\n'); /* Find the line-break character (if it exists) */ 
if(cp) 
    *cp = '\0'; /* Convert the line-break character to a string termination character. */ 

printf("userinput:%s",userinput); 
printf("DONE"); 
+0

이 작품 덕분에 많은 – user2636368

0

getline에는 개행 문자가 포함되어 있습니다. 그런 다음

userinput[strlen(userinput)-1] = '\0'; 

, 사용 둘 다 인쇄 할 수 있습니다 : 당신은에 의해 있음을 트리밍 할 수

printf("userinput: %s DONE\n", userinput); 
+0

'의 getline()가'버퍼에 기록 된 문자 수를 반환, 또한, 당신은 그것을 사용할 수 있고'strlen()'호출의 필요성을 제거 할 수있다. –

관련 문제