Re: [maillist] C++ Problem

Udo Walter (udo.b.walter@daimlerchrysler.com)
Fri, 20 Aug 1999 11:23:12 +0200

(ThomasWeller) wrote:
>=20
> > 'n' belegt genau* einen Speicherplatz der Gr=F6=DFe char
> > "n" belegt genau* zwei Speicherpl=E4tze der Gr=F6=DFe char
> >
> > "Strings" sind immer Null-terminiert...
> >
> > "n" pa=DFt also nur in ein Array x mit der Deklaration:
> > char x[2] (oder mehr)
> Das wiederum sind allerdings 3 Bytes, n=E4mlich das x[0] f=FCr die L=E4=
ngenangabe,
> wenn ich richtig liege, das x[1] f=FCrs 'n' und das x[2] f=FCr '\0' (00=
hex).
>=20

ich gebs zu, unter C hab ich mit 'diesen' Zeichen nichts gemacht - ich
habs eben mal probiert, es geht so ned.
das folgende Programm
<---------
u_char string[8];
u_char x =3D 0;

for (x=3D0;x<8;x++) {
string[x] =3D 0xcc;
}
strcpy(string,"n");
for (x=3D0;x<8;x++) {
printf ("0x%02x ",string[x]);
}
------>
mit dem ergebnis:
tmp> a.out
0x6e 0x00 0xcc 0xcc 0xcc 0xcc 0xcc 0xcc=20

zeigt, da=DF tats=E4chlich zwei Byte reingelegt werden.
x[2] sind tats=E4chlich zwei Byte: x[0] und x[1];
x[2] ist out of range.
Ein strcpy(string,'n'); gibt beim Compilieren Warning und beim Ausf=FChre=
n
coredump.
was ist da verkehrt?

mfG. Udo
--=20
Institut f=FCr Motorenbau Prof. Huber GmbH=20
--------------------------------------------
udo.b.walter@daimlerchrysler.com