我希望以下内容要求输入,然后接受一个字符串(带空格),然后再做一次.但在输入第一个字符串后,它会重复输出“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读取带空格的字符串?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)