gpt4 book ai didi

c - 将矩阵分配给结构

转载 作者:太空宇宙 更新时间:2023-11-04 03:15:16 25 4
gpt4 key购买 nike

基本上,我正在尝试将矩阵元素分配给一个结构数组。第一个结构有 a=1、b=2、c=3,第二个结构有 a=4、b=5、c=6 等等。我现在的问题是我不知道如何在 setmat 函数中执行此操作。

#include <stdio.h>
#include <stdlib.h>

#define COLS 3
#define MAX_ENTRIES 3

typedef struct str_t_ {
int a;
int b;
int c;
} str_t;

void setmat(str_t *str, int mat[][COLS]) {
str->a = mat[][0];
str->b = mat[][1];
str->c = mat[][2];
}

void printmat(str_t str[MAX_ENTRIES]) {
int i;
for (i = 0; i < MAX_ENTRIES; i++) {
printf("%d %d %d\n\n", str[i].a, str[i].b, str[i].c);
}
}

int main(void) {
int matrix[][COLS] = {
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};
typedef str_t str_;
str_ *structs[MAX_ENTRIES];
int i;
for (i = 0; i < MAX_ENTRIES; i++) {
setmat(&structs[i], matrix);
}
printmat(structs);
return EXIT_SUCCESS;
}

最佳答案

您混淆了复制二维数组和复制二维数组的一行。复制二维数组的版本可能如下所示:

void setmat(str_t *str, int mat[][COLS]) {
for(i = 0;i < MAX_ENTRIES;i++) {
str->a = mat[i][0];
str->b = mat[i][1];
str->c = mat[i][2];
str++;
}
}

调用应该是:

setmat(structs, matrix);

关于c - 将矩阵分配给结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52572139/

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