gpt4 book ai didi

c - 为什么我不能使用 'scanf_s' 同时读取字符和数字?

转载 作者:行者123 更新时间:2023-12-02 09:07:06 30 4
gpt4 key购买 nike

此代码崩溃:

scanf_s("%c %d",&ch,&x);//Run error

但是这段代码有效:

scanf_s("%c",&ch);
scanf_s("%d",&x);//Run succeed

我想知道为什么第一个代码片段是错误的。

“运行错误”的意思当我运行程序输入时,编译器有警告并且出现问题

最佳答案

由于您使用的是 scanf_s(与 scanf 相比),您需要为 %c 提供额外的长度参数(参见,例如,this 来自 Microsoft 的有关 scanf_s 的文档):

Unlike scanf and wscanf, scanf_s and wscanf_s require you to specify buffer sizes for some parameters. Specify the sizes for all c, C, s, S, or string control set [] parameters.

所以你必须写

scanf_s ("%c %d", &ch, 1, &x);

表示第一个%c最多读取一个字符。

请注意,scanf_s("%c",&ch); 应该发出相同的警告/错误,因为它也缺少 %c 的强制长度参数。

相比之下,

命令 scanf_s("%d",&x); 则可以,因为 %d 不需要(不得提供)额外的长度参数.

关于c - 为什么我不能使用 'scanf_s' 同时读取字符和数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56923299/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com