Announcement

Collapse
No announcement yet.

Konflikt mit: *Str="Zeiger" und Str[0]=0

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Konflikt mit: *Str="Zeiger" und Str[0]=0

    Hallo!

    Folgender Code funktioniert nur <B>einmal:</B>
    <PRE>
    void Test(void) {

    char *Str;<P>

    Str="Ein Text";
    printf("%s",Str);
    Str[6]=0;
    }
    </PRE>
    Mit der letzten Zeile möchte ich die Länge von Str auf
    sechs Zeichen begrenzen.

    Wenn dann aber der Code ein <B>zweites mal</B> aufgerufen wird,<BR>
    wird das \0 <B>nicht</B> durch <I>Str="Ein Text"</I> überschrieben.<BR> Verwende ich stattdessen <I>strcpy</I> tritt das Problem nicht auf.<BR>
    <P>
    Woran liegt das?
    <P>
    Danke für Hilfe.
    <P>

  • #2
    Hallo!

    durch Str="Ein Text"; wird der char-Zeiger auf die den String Ein Text (steht irgendwo in den Programmdaten) umgebogen. Es wird KEINE Kopie des Strings angelegt. Das printf funktioniert daher auch. Die Anweisung Str[6]=0; schreibt dann eine 0 an die 5. Stelle dieses Strings. Weitere printf werden immer nur die ersten Zeichen des Originalstrings ausgeben.
    Hier immer mit einem char-Buffer (z.B. char Str[20]) und strcpy verwenden, oder gleich die Borland-String-Klassen benutzen

    Comment


    • #3
      Danke für die Antwort. Klau

      Comment

      Working...
      X