使用scanf读取带空格的字符串?

使用scanf读取带空格的字符串?,第1张

概述参见英文答案 > Reading string from input with space character?                                     14个 我希望以下内容要求输入,然后接受一个字符串(带空格),然后再做一次.但在输入第一个字符串后,它会重复输出“input $”. char command[80];while(1) { 参见英文答案 > Reading string from input with space character?                                     14个
我希望以下内容要求输入,然后接受一个字符串(带空格),然后再做一次.但在输入第一个字符串后,它会重复输出“input $”.

char command[80];while(1)    {        printf("input$");        scanf("%[^\n]",command);        }

我的输出:nput $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $input $^ C.

我想要的是:

input$hiinput$this can take spacesinput$
解决方法 您通常希望使用以下内容:

char command[80];while(1){    printf("input$");    scanf("%79[^\n]%*c",command);}

’79’防止缓冲区溢出,%* c使用输入缓冲区中的换行符.它有一个小缺点:即使输入缓冲区中的下一个字符不是换行符,它仍会消耗(并丢弃)一个字符.如果你必须处理这种可能性,你可以阅读它并忽略它,除非你的命令缓冲区已满:

char ignore;scanf("%79[^\n]%c",command,&ignore);if (strlen(command) == 79)    // `ignore` probably shouldn't be ignored after all
总结

以上是内存溢出为你收集整理的使用scanf读取带空格的字符串?全部内容,希望文章能够帮你解决使用scanf读取带空格的字符串?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1214580.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存