Подскажите, пожалуйста, как привести String вида "*?1234567" к виду " *-?-1-2-3-4-5-6-7" для вывода на дисплей. в таком виде выводится посимвольно без проблем в терминал. Код (C++): Serial.println(String.charAt(0)); Serial.println(String.charAt(1)); Serial.println(String.charAt(2)); Serial.println(String.charAt(3)); .......
а если так: Код (C++): Serial.print(String.charAt(0)); Serial.print("-"); Serial.print(String.charAt(1)); Serial.print("-"); Serial.print(String.charAt(2)); Serial.print("-"); Serial.println(String.charAt(3));
Код (C++): char strRasporka(const char* str,char* outstr, int outsize,char symbol){ int i=0; int j=0; outstr[j]=str[i]; i++;j++; for(;j<outsize-2;i++){ if(str[i]==0){break;} outstr[j++]=symbol; outstr[j++]=str[i]; } outstr[j]=0; return str[i]; } простейшая функция например. берет некую строку (массив чар с нулем на конце), и копирует его в другой массив, распирая символы выбранным символом. если все нормально - вернет ноль, если не влезло - вернет первый из символов который не влез. применять вот так например: Код (C++): char str[]="*?01234567"; char str_tir[sizeof(str)*2]; char result=strRasporka(str,str_tir,sizeof(str_tir),'-');
В случае пустой строки str, Вы сначала увеличите i (c 0 на 1), а потом уже сравниваете str[1] с нулём. Там нуля может и не быть, он был в str[0].
ну да, это баг. тогда вот так Код (C++): char strRasporka(const char* str,char* outstr, int outsize,char symbol){ if(str[0]==0){return 0;} int i=0; int j=0; outstr[j]=str[i]; i++;j++; for(;j<outsize-2;i++){ if(str[i]==0){break;} outstr[j++]=symbol; outstr[j++]=str[i]; } outstr[j]=0; return str[i]; } только нафига в такую функцию пустую строку сувать