R. B. schrieb:
> uint8_t smstext[5][70];
du weist schon, dass sms länger als 70 Zeichen sein können?
Info: wenn man Zeichen meint, sollte man char schreiben, meint man Bytes
(Binärdaten) uint8_t
> static int i;
warum in alles in der Welt static?
>
> if(new_sms){
> for(i=3;i>=0;i--){
> memcpy(&smstext[i+1][0],&smstext[i][0],70);
man könnte auch strcpy nutzen
> }
>
> SMS_Receive( new, &smstext[0][0] , 0 );
> }
> uint8_t smstext[5][70];
> for(i=3;i>=0;i--){
> memcpy(&smstext[i+1][0],&smstext[i][0],70);
was ist denn, wenn du morgen 6 SMS mit 80 Zeichen Speichern willst?
Hast du schonmal was von Konstanten/defines gehört.
AUch würde ich für eine SMS eine Struktur anlegen, selbst wenn vorerst
nur ein Char-Array drin steht, das macht diese ganze Indexgeschichte
imho übersichtlicher und erspart das memcopy
1 | #define SMS_MAX_TEXT_LENGTH 70
|
2 | #define SMS_MAX_COUNT 5
|
3 | typedef struct SMS
|
4 | {
|
5 | char text[SMS_MAX_TEXT_LENGTH];
|
6 | }SMS;
|
7 |
|
8 |
|
9 | SMS sms[SMS_MAX_COUNT];
|
10 |
|
11 | if(new_sms){
|
12 | int i;
|
13 | for(i=SMS_MAX_COUNT-1;i>=0;i--){
|
14 | sms[i+1] = sms[i];
|
15 | }
|
16 | SMS_Receive( new, &sms[0] , 0 );
|
17 | }
|
so einfach kann Code aussehen.
Dass man hier mit einem Ringpuffer ganz auf das Kopieren ganz verzichten
kann, erwähne ich nicht noch mal.