2014-04-28 55 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()'调用。 –