Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » String

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.02.2006, 14:46 Uhr
ref



schon wieder ein fragezeichen aufgetaucht,

in diesem code , soll der string :String2 mit \0 abgeschlossen werden
String2[strlen(String1)] = '\0'; // Null-Zeichen anzufügen aber was ist "strlen" ist das ein name oder c++ anweisung? diese "strlen" ist nicht deklariert.




C++:
// Listing 15.9 Die Funktion strncpy()
#include <iostream>
#include <string.h>

int main()
{
     const int MaxLength = 80;
     char String1[] = "Keiner lebt fuer sich allein.";
     char String2[MaxLength+1];

     strncpy(String2,String1,MaxLength);
     String2[strlen(String1)] = '\0'; // Null-Zeichen anfügen
     std::cout << "String1: " << String1 << std::endl;
     std::cout << "String2: " << String2 << std::endl;
     return 0;
}


--
Man kann ein Problem nicht mit der gleichen Denkweise lösen, mit der es erschaffen wurde. (Albert Einstein)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.02.2006, 15:15 Uhr
Spacelord
Hoffnungsloser Fall


Schau mal oben auf der Seite nach den Links.Da ist nen Link "clib Reference" da findest du unter anderem auch die Beschreibung dieser Funktion.
strlen liefert die Länge eines C-Strings,also die Anzahl der Zeichen bis \0.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.02.2006, 20:31 Uhr
ao

(Operator)



C++:
String2[strlen(String1)] = '\0';

Dies ist ein Fehler, wenn String1 länger als MaxLength ist. Es wird dann auf Speicher zugegriffen, der hinter dem Ende von String2 liegt.
Das strncpy ist zwar schon ne gute Idee, schützt hier aber leider auch nicht, da auf String1 nirgendwo eine Längenkontrolle angewendet wird.
Dringende Empfehlung: Schnellstens lernen, wie man mit std::string umgeht.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.02.2006, 20:45 Uhr
ref



der lange von String1 ist 29 , aber der letzte symbol von String1 hat der speicherplatz 28
deswegen die addierung von "/n" erfolgt dannach. ohne löschung der letzte symbol von String1 ,b.z. String2 der schon eine frei extra platz hat von MaxLength+1
--
Man kann ein Problem nicht mit der gleichen Denkweise lösen, mit der es erschaffen wurde. (Albert Einstein)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: