【问题标题】:Combining two arrays in c, function causing error在c中组合两个数组,导致错误的函数
【发布时间】:2013-11-10 14:32:14
【问题描述】:

作为更大程序的一部分,我正在尝试组合两个结构数组。我还试图将新的传递给打印功能。我知道该函数有效,因为当我将其中一个数组传递给它时,它会正确打印。

这是结构,我确信它是正确的,因为当我将它的数组传递给另一个函数时,该函数可以工作。

typedef struct {
        long unsigned bibnum; 
        char lastname[charnum];
        char firstname[charnum];
        int grade;
        char team[charnum];
        char state[charnum];
        int time1;
        float time2;
    } runner_t;

我的前两个数组是 runarrayboys 和 runarraygirls,并且是结构类型 runner_t 的数组。第三个是runarrayall。这就是我尝试结合它的方式。当我尝试运行它时,我遇到了分段错误。在将 printfs 放在所有地方之后,我很确定它在第二个 for 循环的声明行中。

    while (p<(x+y))
        {
            for (q=0; q<x; q++)
                {
                    runarrayall[q] = runarrayboys[q];
                    p++;
                    /* printingfucntion(runarrayall[q]);  */
                }
            for (q=x; q<(x+y); q++) 
                {
                    printf("in for loop2 \n");
                    runarrayall[q] = runarraygirls[n];
                    n++;
                    p++;
                }
        }

当我取消注释打印功能时,我收到此错误:

LA2.c:(.text+0xdaa): undefined reference to `printingfucntion'
collect2: ld returned 1 exit status

即使我传入数组的方式与其他有效的方式相同

【问题讨论】:

  • 我认为错字“printingfucntion”不是意外?
  • 哇,我犯了最愚蠢的错误。谢谢!所以我修复了这个问题并打印了那部分,但我仍然在第二个 for 循环中遇到分段错误
  • 你是如何分配数组的?你用它们的元素数量乘以 sizeof(runner_t) 对它们进行了 malloc 吗?
  • @Sean 我使用了 malloc,就像这样:runarrayboys = (runner_t *)malloc(x * sizeof(runner_t)); runarraygirls = (runner_t *)malloc(y * sizeof(runner_t));
  • runarrayall 怎么样?是否也将 n 初始化为 0?

标签: c arrays function for-loop structure


【解决方案1】:

你在初始化 runarrayall 吗?

runarrayall = (runner_t *)malloc( sizeof(runner_t)*(x + y) );

【讨论】:

  • 这更像是一个评论而不是一个答案,但是 +1 因为你似乎猜对了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-29
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
相关资源
最近更新 更多