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下编译。 抱歉我的英语很差。
答案 0 :(得分:1)
您可能需要将它们定义为全局变量,而不是本地变量,然后您可以在任何函数中访问它们。
将它放在包含两个函数的.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;
....
}