gpt4 book ai didi

c - 在 C 中打印数组?

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:40 26 4
gpt4 key购买 nike

我正在尝试打印几个数组,这些数组是在一个单独的函数中计算的,并在另一个单独的函数中打印,而不是在 main 函数中调用该函数。这是第一个存储和计算来自 struct varOne 的值的函数

void function1(struct varOne arrayOne[], struct varTwo* finalMark) {
int i;
for (i=0;i<12;i++) {
finalMark->num1 = arrayOne[i].mark1 + arrayOne[i].mark2;
finalMark->num2 = arrayOne[i].mark3 + arrayOne[i].mark4;
}
}

这个函数打印出总数:

void function2(int totalNumber, struct varTwo* finalMark) {
printf("%d, %d \n", finalMark->num1, finalMark->num2);
}

然后我们像这样在 main 中打印出 function2:

for(i=0;i<6;i++){

function2(i+1,&finalMark[i]);
}

问题是程序将一个特定值打印了 6 次,如下所示:

45, 34
45, 34
45, 34
......

但它应该打印 6 个不同的值,因为在 function1 中我们存储了所有数组的结果!

最佳答案

 for (i=0;i<12;i++) {
finalMark->num1 = arrayOne[i].mark1 + arrayOne[i].mark2;
finalMark->num2 = arrayOne[i].mark3 + arrayOne[i].mark4;
}

function1 中,这两个变量 num1num2 在每次迭代中获取最近的值,并且之前的值丢失。它们包含存储在其中的最后一个值。因此,当您打印时,它会打印出所有相同的值。

你可以这样写上面的-

 for (i=0;i<12;i++) {
finalMark[i].num1 = arrayOne[i].mark1 + arrayOne[i].mark2;
finalMark[i].num2 = arrayOne[i].mark3 + arrayOne[i].mark4;
}

注意 - 只要确保您为结构指针分配了足够的内存即可。

关于c - 在 C 中打印数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33973184/

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