-> 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 = 0;
->
-> for (x=0;x<8;x++) {
-> string[x] = 0xcc;
-> }
-> strcpy(string,"n");
-> for (x=0;x<8;x++) {
-> printf ("0x%02x ",string[x]);
-> }
-> ------>
-> mit dem ergebnis:
-> tmp> a.out
-> 0x6e 0x00 0xcc 0xcc 0xcc 0xcc 0xcc 0xcc
->
-> zeigt, daß tatsächlich zwei Byte reingelegt werden.
Klar. strcpy macht in diesem Falle folgendes:
1. in string[0] wird das Zeichen n abgelegt
2. in string[1] wird das Zeichen \0 abgelegt. Damit ist der char-Array null
terminiert.
-> x[2] sind tatsächlich zwei Byte: x[0] und x[1];
-> x[2] ist out of range.
Logisch, weil in string[1] schon das Ende durch \0 steht.
-> Ein strcpy(string,'n'); gibt beim Compilieren Warning und beim Ausführen
-> coredump.
-> was ist da verkehrt?
Die Funktion strcpy erwartet einen String, der normalerweise von zwei "
eingeschlossen ist. Hier soll jedoch nur ein ZEICHEN kopiert werden und das
geht nicht. Willst Du ein Zeichen in eine Position des char-Array string
einfuegen, dann muss das so heissen:
string[4] = 'n';
Hilft das?
Beste Gruesse
Stef
-- /----------------------------------------------------------------------\ | Dr. Stefano Ianigro | | Institut fuer Informatik - Fachbereich WOW | | Universitaet der Bundeswehr Hamburg "Ich weiss, dass ich nichts | | Holstenhofweg 85 weiss..." (Sokrates) | | D-22043 Hamburg Tel.: 040/6541-2656 oder -3345 (Sekr.) | | E-Mail: stef@unibw-hamburg.de Fax: 040/6541-2780 | | HTTP: http://www-ifi.unibw-hamburg.de | \----------------------------------------------------------------------/This message was sent by XFMail on 20-Aug-99 at 11:25:50.