加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 09:40:32 所属栏目:百科 来源:网络整理
导读:参见英文答案 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$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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读