使用scanf的输入格式

使用scanf的输入格式,c,C,我无法解决C教材中的这个问题: 使用以下scanf函数输入数据,使a=10,b=20,c1='a',c2='a',x=1.5,y=-3.75,z=67.8。你在键盘上键入什么 scanf("%5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&y,&z); 基本上,这是一个关于C语言输入格式的问题。我尝试键入以下内容,但没有成功: 00010凵00020Aa凵1.5凵-3.75凵1.5,凵67.8 在哪里凵 表

我无法解决C教材中的这个问题:

使用以下scanf函数输入数据,使a=10,b=20,c1='a',c2='a',x=1.5,y=-3.75,z=67.8。你在键盘上键入什么

scanf("%5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&y,&z);
基本上,这是一个关于C语言输入格式的问题。我尝试键入以下内容,但没有成功:

00010凵00020Aa凵1.5凵-3.75凵1.5,凵67.8
在哪里凵 表示一个空间。当我使用printf输出变量时,它会给出以下错误消息:

Project1.exe中0x000007FEEC8243CE(msvcr120d.dll)处未处理的异常:0xC0000005:访问冲突写入位置0x0000000acccc


有人能帮我吗?

您发布的输入与您发布的
scanf
格式非常匹配。不需要改变任何东西。至于“未处理的异常”错误,它与您目前发布的内容无关。在显示代码的其余部分之前,无法说明代码中发生了什么以及为什么它“不起作用”

我的“有根据的猜测”是,您只需将
scanf
格式字符串复制粘贴到
printf
,从而不经考虑地将
%*f
格式说明符也传输到
printf
。但是,
printf
格式字符串中的
*
表示来自
scanf
格式字符串的内容。它通常会使您的
printf
崩溃,除非您在
printf
参数列表的变量部分进行一些非常谨慎的更改


顺便说一句,没有必要用前导零填充前两个整数。格式字符串中的
5
仅限制了要读取的最大字符数,而没有施加任何最小值。您只需使用
“10 20Aa 1.5 3.75 1.5,67.8”

扫描有什么问题(“%d%d%c%c%f%f%f”,…)?然后,你的输入将是
1020a1.537567.8
。好吧,这是C教科书中一章末尾的问题。该问题的目的是测试学生对C scanf规范的熟悉程度。这就是为什么故意把它弄得这么复杂。当然我知道最好的方法就是你的建议,但这不是重点。问题是,你如何解决这个弱智设计的问题?如果这个问题是为了测试学生的熟悉程度,为什么你要我们解决这个问题?我们不是学生。如果这本书没有为你提供必要的信息,请联系作者或购买另一本书。对那些你要求免费帮助来解决问题的人无礼是一个非常糟糕的主意。你可能要记住这一点。还请记住,当你在这里发帖时,你不能选择谁对你的帖子做出回应或评论。除非你的书是关于如何学习复制/粘贴别人的作品而不是自己的作品,否则你应该学会自己解决问题。@FalloutRanger:你发布的输入与你发布的
scanf
格式完全匹配。不需要改变任何东西。至于“未处理的异常”错误,它与您目前发布的内容无关。在您展示代码的其余部分之前,无法说明代码中发生了什么以及为什么它“不起作用”。我想测试一下。你知道html吗?