У меня проблема с прохождением char*
к массиву char**
на моем Teensy.
Ниже проблемная часть:
for (j = 0; j < rulesamountsingle; j++) {
emptybuffer(buff);
char temp[10];
while(!Serial.available());
len = Serial.available();
for (i = 0; i < len; i++) {
temp[i] = Serial.read();
}
temp[len-1] = 0;
fuzzyRulesSingle[j] = temp;
Serial.print(fuzzyRulesSingle[j]);
Serial.print('\n');
}
Как вы видете, fuzzyRulesSingle[j]
(где fuzzyRulesSingle
это char**
) будет заполнен переменной temp
(а char*
). Как я увеличиваю j
следующий адрес в fuzzyRulesSingle
будет заполнен новым temp
,
Тем не менее, когда я печатаю fuzzyRulesSingle
ВНЕ кода выше, все fuzzyRulesSingle
будет заполнен последним значением темп.
Где я ошибся?
Вы указываете fuzzyRulesSingle[j]
к временному массиву символов temp
,
Простой способ исправить это — изменить fuzzyRulesSingle[j] = temp;
в strcpy(fuzzyRulesSingle[j], temp)
и изменение декларации fuzzzyRulessSingle
до необходимого размера.
ИЛИ ЖЕ
Вы можете объявить temp
увеличьте цикл и используйте malloc
выделить необходимую память, а затем назначить ее fuzzyRulesSingle[j]