2014-04-28 91 views
1

因此,我試圖使用getline讀取用戶輸入,並且我遇到的錯誤是如果用戶輸入「Hi there」,當它讀取它時認爲最後會出現換行。所以當我嘗試打印它時,會打印出「Hi there」,然後自動進入下一行,我怎麼才能讓它不會進入下一行。在用戶輸入的末尾讀取換行符c

這裏是我的代碼 -

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()'調用。 –