Re: [maillist] C++ Problem
Peter Bieringer (pb@bieringer.de)
Fri, 20 Aug 1999 18:25:24 +0200
At 10:41 20.08.99 +0200, you wrote:
>Peter Bieringer wrote:
>> Bist Du Dir da so sicher? Kein Expertenstreik, aber in C ist ein
>> char (normalerweise) eine 8-Bit-Speicherzelle (ohne Kennzeichnung eines
Ende)
>> ein String aber immer mit '\0' abgeschlossen.
>>=20
>
>ahem ... sicher ned, aber ich bin da mal von der Physik im Speicher
>ausgegangen:
>
>einen Charakater definier ich mit=20
>unsigned char var_name;
>
>einen string mit
>unsigned char string[10];
>
>ob in dem String jetzt das letzte Zeichen ein '\0' ist, ist ja von der
>Verwendung abh=E4ngig.
>
>Der Unterschied kommt beim Rausprinten (printf ... %c %s)
>h=E4ngt dann aber definitiv vom printf (der Interpretation) ab.
>
>ich mach Controllerprogrammierung, und da steht halt da was bin=E4res,
>oktales
>oder ASCII-Zeichen drin. Im Endeffekt sind es immer eine Abfolge von
>Bits ;)))
Jaja, so tief wollte ich nicht graben, hier ist upper level gefragt gewesen
:-)
Und dort hilft's nix, einen "String" zu benutzen, wenn der nicht mit '\0'
endet...
BTW: f=FCr die von Pascal migrierenden:
in=20
unsigned char string[10];
darf man nat=FCrlich maximal nur 9 Zeichen hineinschreiben, denn als 10. mu=
=DF
ja noch '\0' Platz haben (beliebter Bug, Hacker freuen sich dar=FCber). Also
immmer "strncpy" verwenden, maximal erlaubtes "n" ist dann
(Stringl=E4nge/Arraygr=F6=DFe - 1).
Peter