通过scanf在结构数组中分配多个int值

问题描述 投票:0回答:1

所以我遇到了这个问题,我必须编写一个程序,该程序使用多个长度的用户输入来确定几何结构。

我现在遇到的问题是,我不知道如何使用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?我知道如何从那里完成代码,但这就是我现在正在努力的地方。

(也很抱歉,如果已经有另一个线程遇到类似的问题[很可能是我知道,但是如果您不知道要查找的内容,很难在这里找到东西)]

c arrays struct integer scanf
1个回答
0
投票

可能看起来像:

  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-hhscanf 长度修饰符,它指定转换说明符用于unsigned charsigned charu转换说明符,它告诉scanf扫描unsigned值。供参考,请参阅cppreference on scanf

请注意,scanf 转换规格]之间的空格(即%hhu之间的空格仅用于化妆品-%hhu仍然会忽略所有前导空白字符。

[请注意,我写的答案是假设quadrilateralsquadril相同,并且忽略了其余代码中的错误。

© www.soinside.com 2019 - 2024. All rights reserved.