在c中读取用户输入末尾的换行符

时间:2014-04-28 23:49:12

标签: c printf user-input getline

所以,我试图使用getline读取用户输入,我遇到的错误是,如果用户输入“Hi there”,当它读取它时,它认为最后有一个换行符。因此,当我尝试打印它时,它会打印“Hi there”,然后自动转到下一行,我怎么能不让它进入下一行。

这是我的代码 -

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

如果用户输入 - “它完成了吗?”

目前正在打印 -

"Is it done?"
"DONE"

但我想要打印 - "Is it done?DONE"

非常感谢任何帮助

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

getline包含换行符。您可以通过以下方式修剪:

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

然后,您可以使用以下方式打印它们:

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