printf und Struktur member
-
Hi
ich habe eine structurtypedef struct { char deleted; char code[11]; char combi[2]; char laenge[2]; char decimal; char position[2]; //weitere } ROUTINEN_STRUCT; ROUTINEN_STRUCT routinenRecord;routinenrecord liefert mir Records aus einer Datenbank.
Überprüfe ich die Grösse von routineRecord.code, ( sizeof) stimmt dies.
ebenso wird code korrekt angezeigt, wenn ich es in einer for-Schleife mache.
versuche ich jedoch "printf", wird zuviel angezeigt:printf("....x....1....x....2....x....3\n"); printf("%s|\n",routinenRecord.code); //ergibt //....x....1....x....2....x....3 //ACTH 01 001|es sollten 11 Zeichen gezeigt werden, nachgezählt sind es aber 18

was habe ich da nicht verstanden?
Hanns
-
Fehlende Initialisierung von routinenRecord => fehlendes Abschlussbyte('\0')
von code => "Fehlausgabe"
-
char code[11]; <- sollte 12 sein und code[11] = 0; Damit verhinderst du dann weitere ausgaben, das nennt sich Nullterminierung.
MfG
-
evilissimo schrieb:
char code[11]; <- sollte 12 sein und code[11] = 0; Damit verhinderst du dann weitere ausgaben, das nennt sich Nullterminierung.
dann müsste in routinenRecord.fragefeld ( unsigned char9 das nach position kommt, ne 0x0 stehen.
Die Datenbank liefert alles ohne hex-null zurück. dann kann ich mir ja auch einen
entsprechdn langen String zurückgene lassen, und meine Member selber daraus basteln ( fürchte ich).Was muss ich denn "includen", und wie heißt die entsprechen funtion, um Teilstrings zu extrahieren ?
Danke Hanns
-
char mycode[10] = {0}; strncpy(mycode,routinenRecord.code,9); // Kopiert 9 Zeichen von routinenRecord.code nach mycodeDa mycode 10 byte groß ist aber nur 9 kopiert werden, und ich vorher alle mycodefelder mit 0 initialisiert habe, ist der string mycode jetzt nullterminiert
MfG