gpt4 book ai didi

c - 从另一个函数中检索数组值

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

static void retrieveData(const char* filename)
{
FILE *f;
char s[256];
int a[10];
int b[10];
char c[10][10];
...
.....
long j[10];

sprintf(s, "some code %s", filename);
if ((f = popen(s, "r")) != NULL) {
while (fgets(s, sizeof(s), f)) {
if (strncmp(s, "A........ {
sscanf (s,"........
a[0] = var1;
b[0] = var2;
c[0] = var3;
...
.....
}
else if (strncmp(s, "B........ {
sscanf (s,".........
a[1] = var4;
b[1] = var5;
c[1] = var6;
...
.....
}
else if .........more codes
}
pclose(f);
}
}

我想获取数组a,b,c.....,j中的所有数据。

void getData(int argc, char **argv)
{
int n;
int a[10];
int b[10];
char c[10][10];
...
.....
long j[10];

retrieveData("filename1");

for (n = 0; n < 10; ++n) {
printf("%d\n", a[n]);
}

for (n = 0; n < 10; ++n) {
printf("%d\n", b[n]);
}

...... more codes


retrieveData("filename2");

for (n = 0; n < 10; ++n) {
printf("%d\n", a[n]);
}

for (n = 0; n < 10; ++n) {
printf("%d\n", b[n]);
}

...... more codes

}

filename1 和 filename2 包含相同的数据结构但不同的值。请有人告诉我如何...我在linux c下编译。抱歉我的英语不好。

最佳答案

您可能需要将它们定义为全局变量,而不是局部变量,然后您就可以在任何函数中访问它们。

将其放在包含这两个函数的 .cpp 文件的顶部。

int a[10];
int b[10];
char c[10][10];

请使用更好的名字 :)

或者,由于在您的情况下,一个函数调用另一个函数,因此您可以将数组作为指针作为参数传递给函数,但至少在 2D 指针的情况下这会很痛苦。

第三种,在语法上更简单,选项是将 3 个数组包装在 struct 中,并传递指向该 struct 的指针,感谢 Basile Starynkevitch。

typedef struct{
int a[10];
int b[10];
char c[10][10];
} Arrays;

void getData(int argc, char **argv)
{
...
Arrays a;
retrieveData("...",&a);
...
}

void retrieveData(const char* filename, Arrays *a){
a->b[1] = 1;
....
}

关于c - 从另一个函数中检索数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14432720/

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