C语言中scanf函数格式化获取字符串问题失败问题

算是为了下一代教育,最近重新学习C语言,学习书籍C primer plus 6版

4章节练习的时候,发现一个问题,当我尝试以逗号分隔两个输入的字符串的时候第二个字符串未能获取到值,且scanf函数直接跳过第二个值的获取。具体代码如下

#include "stdio.h"

int main(void)
{
    char first_name[40];
    char last_name[40];

    printf("请输入你的名与姓,以逗号分隔:\n");
    //假设输入数据合法
    //此处应有输入规则控制
    scanf("%s,%s",last_name,first_name);

    //此处应有输出合法性控制
    printf("您好,%s%s\n",last_name,first_name);

    printf("last name is %s\n",last_name);
    //此处我想测试“first_name”是否被赋予了换行字符
    printf("first name is %s\n\n",first_name);

}

运行结果如下:
图片说明

问题来源于书中对整型d%的格式化输入是可行的,为什么字符串不行呢?

图片说明

编译器环境:

图片说明

1个回答

我试了一下,还真是不行,我猜是把输入的','当做字符串处理了
把','换成空格可以正确获得两个字符串
scanf("%s %s",last_name,first_name);

wjlcnhf2008
wjlcnhf2008 就算是识别成字符穿了的话,也不能直接不给第二个字符串输入的机会呀
9 个月之前 回复
wjlcnhf2008
wjlcnhf2008 开始是空格,但是像类推一下,就出现这个问题了,但是就是不知道为什么,这不知道从何入手,难道要去读c11标准么T。T。。。。
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问