Hallo,
ich habe ein kurze Frage: Ich möchte gerne in ein Array serielle Daten
schreiben, die interruptgesteuert mit Hilfe der UART-Lib von
Peter-Fleury empfange und auslese.
In einer anderen Funktion möchte ich gerne die Daten in ein Array
schreiben, ergänzen und gleich wieder über den UART ausgeben. Wenn ich
mein Array (lokal deklariert) time nicht initialisiere erhalte ich am
Ende der Ausgabe komische Zeichen wie 0xB5, etc.
Wie ist das zu erklären, bzw. wie rutschen da die Zeichen rein?
char time[15];
char cce_time[5];
char utc_time[5];
strcpy( time, cce_time );
strcat( time, ":" );
strncat( time, gps_buffer + 8, 2 );
time[5] = '\0';
strcat( time, "p.m." );
Grüße
wenn du ein array nicht initialisierst, kann es dir passieren das in den entsprechenden speicherzellen, die dann dem array zugeordnet sind, eben noch daten von vorherigen dingen drinstehen, die werden nicht gelöscht. arrays müssen zwingend initialisiert werden. wenn du dein array global oder static deklarierst, musst du das nur 1 mal machen. mfg
Wie gibst du da Array den aus? Alle 15 Zeichen oder nur bis zur '\0'?
Hallo, Danke für die Antworten! ich gebe die Zeichen bis p.m. aus. Bspw. möchte ich 12:00p.m. ausgeben! Grüße
Füge doch mal hinter p.m. noch ein \0 ein.
C-Oldie schrieb: > Füge doch mal hinter p.m. noch ein \0 ein. Das macht strcat eigentlich automatisch.
Karl schrieb: > Wie ist das zu erklären, bzw. wie rutschen da die Zeichen rein? Der gepostete code sieht eigentlich OK aus, mit der Annahme dass cce_time mit 0 terminiert ist, und maximal 14 Zeichen lang. Der Fehler steckt vermutlich in dem Teil des codes, den Du nicht zeigst ! Z.b. sind natuerlich nur 9 Zeichen von "time" gueltig (plus abschliessender '\0' terminator). Vielleicht gibst Du einfach zu viele Zeichen zurueck ?
>> Das macht strcat eigentlich automatisch. > aber strncat nicht Doch, tut es.
holger schrieb: >>> Das macht strcat eigentlich automatisch. > >> aber strncat nicht > > Doch, tut es. oops, hab ich mit strncpy verwechselt
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.