使用scanf读取带空格的字符串?
参见英文答案 >
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$hi input$this can take spaces input$ 解决方法
您通常希望使用以下内容:
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |