【问题标题】:Reads a line break at the end of the user input in c在 c 中读取用户输入末尾的换行符
【发布时间】:2014-04-28 23:49:12
【问题描述】:

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

这是我的代码 -

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

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

它当前打印这个 -

"Is it done?"
"DONE"

但我希望它打印 - "Is it done?DONE"

非常感谢任何帮助

【问题讨论】:

    标签: c printf user-input getline


    【解决方案1】:

    一种方法是消除用户输入字符串中的换行符:

    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");
    

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • getline() 返回写入缓冲区的字符数,因此您可以使用它并消除对 strlen() 调用的需要。
      猜你喜欢
      • 1970-01-01
      • 2021-07-21
      • 2022-01-21
      • 2012-05-03
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      相关资源
      最近更新 更多