循环通过C struct w / o union

时间:2017-03-24 17:33:05

标签: c struct

我的意图:循环 - 不使用联合 - 一个结构的30个成员,所有类型字符数组,每个存储调用itoa的结果。在以下代码中,我将结构成员命名为a-z,A-D。在调用函数中,我初始化了一些字符串,称为'字母'然后我尝试通过引用结构成员来循环使用我的增量变量作为字母的索引。然后,我尝试转储结构的每个成员的内容。 **编辑:我发现成员不会包含任何内容,因为您可以看到代码。问题似乎在于引用像这样的struct成员。

struct listArrays {

    char a[10];
    char b[10];
    char c[10];
    char d[10];
    char e[10];
    char f[10];
    char g[10];
    char h[10];
    char i[10];
    char j[10];
    char k[10];
    char l[10];
    char m[10];
    char n[10];
    char o[10];
    char p[10];
    char q[10];
    char r[10];
    char s[10];
    char t[10];
    char u[10];
    char v[10];
    char w[10];
    char x[10];
    char y[10];
    char z[10];
    char A[10];
    char B[10];
    char C[10];
    char D[10];

};

struct listArrays Ternaries;

int testTernary(){

    char letters[30] = "ABCDabcdefghijklmnopqrstuvwxyz";
    int i;

    for(i = 0; i < 30; ++i){
        dumpArray((Ternaries.(letters[i])), 10);
    }

    return 0;
} 

我得到的错误是&#34;符号之前的预期标识符(&#39;令牌。&#34;

我排除的问题:

    -The dumpArray function works fine.
    -Looping through the letters works fine, outside the context of the 
     referral to struct members

1 个答案:

答案 0 :(得分:1)

标识符(名称)仅存在于程序文本中。一旦编译和链接,它们就不再存在。所以你不能“索引”字母的结构。你能做的是:

struct listArrays {

    char letters[30][10];
};

现在您可以访问这些“信件”:

dumpArray((Ternaries.letters[i]), 10);