gpt4 book ai didi

c - 如何使 scanf 选择性地忽略其转换说明符之一?

转载 作者:行者123 更新时间:2023-12-02 09:03:54 26 4
gpt4 key购买 nike

char value1[10];
int value2;
int value3 = 0;
if (!scanf("%s %d %d", &value1[0], &value2, &value3)) {
scanf("%s %d", &value1[0], &value2);
}
;

我正在尝试使用 scanf 插入 3 个值,但如果收到 2 个值,它将取而代之。我找不到关于如何使用 scanf 的任何答案。我一直在尝试使用 fgets,但标准输入中的值仍然存在。

最佳答案

char value1[10]; int value2; int value3 = 0;
if (!scanf("%s %d %d", &value1[0], &value2, &value3)) { scanf("%s %d", &value1[0], &value2); } ;

一件小事:不要使用&value1[0],使用value1。数组将衰减为指向其第一个元素的指针,理论上,您要将字符串存储在 value1 中。

其次,您只需调用一次scanf 并查看其返回值。这会告诉您读入了多少个值。在这种情况下,您并不关心,因此您可以使用:

if (scanf("%s %d %d", value1, &value2, &value3) < 2)
{ /* error handling */ }
else // we read in 2 or 3 entries, life is good
{ /* success handling */ }

关于c - 如何使 scanf 选择性地忽略其转换说明符之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60520190/

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