所以我遇到了这个问题,我必须编写一个程序,该程序使用多个长度的用户输入来确定几何结构。
我现在遇到的问题是,我不知道如何使用scanf函数来做到这一点。我创建了一个结构和一个数组,我知道它的工作方式与我编写它的方式类似,但是我必须对任意数量的可能结构执行此操作。顺便说一下,除stdio.h之外,我不允许包含任何库,我只在此处复制代码的相关部分
#include <stdio.h>
int main(void)
{
signed char quadriNum = 0; //is defined proper value in another part of the code so act like it says 50
struct quadril
{
unsigned char side_a;
unsigned char side_b;
unsigned char side_c;
unsigned char side_d;
} quadril;
struct quadril arr_quadril[quadriNum];
for(int quadriCntr = 1; quadriCntr <= quadriNum; quadriCntr++)
{
printf("Please enter the four lengths for quadril %d :\n", quadriCntr);
scanf("%i %i %i %i", ); //this is where I'm having problems
}
}
我如何将这4个整数分配给同一个四元组的对应a,b,c,d?我知道如何从那里完成代码,但这就是我现在正在努力的地方。
(也很抱歉,如果已经有另一个线程遇到类似的问题[很可能是我知道,但是如果您不知道要查找的内容,很难在这里找到东西)]
可能看起来像:
for(int i = 0; i < quadriNum; i++)
{
printf("Please enter the four lengths for quadril %d :\n", i + 1);
int ret = scanf("%hhu %hhu %hhu %hhu",
&arr_quadril[i].side_a,
&arr_quadril[i].side_b,
&arr_quadril[i].side_c,
&arr_quadril[i].side_d
);
if (ret != 4) {
fprintf(stderr, "Och! scanf failed!\n");
abort();
}
}
%hhu
-hh
是scanf
长度修饰符,它指定转换说明符用于unsigned char
或signed char
。 u
是转换说明符,它告诉scanf
扫描unsigned
值。供参考,请参阅cppreference on scanf。
请注意,scanf
转换规格]之间的空格(即%hhu
之间的空格仅用于化妆品-%hhu
仍然会忽略所有前导空白字符。
[请注意,我写的答案是假设quadrilaterals
与quadril
相同,并且忽略了其余代码中的错误。