2016-12-05 62 views
0

我想寫這種東西:如何在運行時用持有者替換char變量?

(s[i])[i] ,where s[i] is of type char[]. 

例子:

s[i]="PDGH"; 
for(i = 0 ; i < strlen(someNumber) ; i=i+3) 
(s[i])[formula]++; // on compile if s[i]='P', then i want to get P[formula]++ . 
+0

也許隨着字典? –

+0

'strlen(someNumber)'? 'formula'?我一點也不清楚你想達到什麼。 –

+0

我希望我的代碼用s [i]代替它的值來編譯,比如我有4個向量:int A [100],B [100],C [100] .D [100],我可以做s [i])[number],其中s [i]只能得到值A,B,C,D(這就是輸入被解析的方式),所以最終它就像是寫A [number]或B [數字]等,而不用明確地寫出名字A [數字],B [數字]等。 – user5731286

回答

1

什麼你問的是映射一個字符串(當然,在你的情況下,單個字符)到C中的變量。這不是由語言直接支持的。或者,因爲在你的例子中你只有單字符變量(P,D,G,H),所以你可以使用你選擇的關聯數組實現,這裏有很多的選擇 - 見這裏:Looking for a good hash table implementation in C

或者, ,你可以建立一個查詢表:

int P=0, D=0, G=0, H=0; 
int* targets[256] = {}; 
targets['P'] = &P; 
targets['D'] = &D; 
targets['G'] = &G; 
targets['H'] = &H; 

for (size_t i = 0; i < strlen(s); i += 3) { 
    assert(targets[s[i]]); 
    (*targets[s[i]])++; /* if s[i] == 'P', increment P */ 
} 
+0

謝謝!這正是我所期待的 – user5731286