Что вы просите, чтобы отобразить строку (ну, в вашем случае один символ) к переменная в C. Это не поддерживается непосредственно языком. Тем не менее, вы можете использовать свой выбор реализации ассоциативного массива, для которого существует множество вариантов - см. Здесь: Looking for a good hash table implementation in C
Или, поскольку в вашем примере у вас есть только односимвольные переменные (P, D, G, H) , вы можете построить таблицу поиска:
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 */
}
Возможно с помощью словаря? –
'strlen (someNumber)'? 'Formula'? Мне совершенно не ясно, чего вы хотите достичь. –
Я хочу, чтобы мой код заменил s [i] на его значение при компиляции, например, если у меня есть 4 вектора: int A [100], B [100], C [100] .D [100], я мог бы сделать (s [i]) [число], где s [i] может получить только значения A, B, C, D (так происходит анализ синтаксиса), поэтому в конце это похоже на запись A [число] или B [число] и т. д., без явного написания имен A [число], B [число] и т. д. – user5731286