Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » char *array to 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 < [ 2 ]
000
22.04.2004, 11:17 Uhr
~Tom
Gast


wie bekomme ich aus einem Char-Array einen String???
z.B. habe ich ein Array:

Code:
char *String = "Hallo";


Wie kann ich das umwandeln, damit ich dieses Array auch wirklich als String nutzen kann?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.04.2004, 11:20 Uhr
Pablo
Supertux
(Operator)



C++:
char string[] = "Hallo";




Bearbeitung von Pablo:

Warum du ein char* nicht verändert darst (wie oben) liegt daran, dass const implizit deklariert wird, so dass du den Inhalt des Zeigers als Variables ändern darfst, aber nicht den Inhalt der Adressen, auf die der Zeiger zeigt.

Wenn du char* benuzten willst, dann solltest du vielleicht vorher malloc benutezen, ich finde, das ist keine schöne Lösung.

Du kannst aber direkt mit Arrays arbeiten

C++:
char string[1024];
strcpy(string, "Hallo");




--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 22.04.2004 um 11:23 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.04.2004, 11:30 Uhr
~Tom
Gast


Und wenn ich diesen String nicht einfach mit char string[] = "hallo" erstelle, sondern den String aus einer Datei bekomme?
Ich kriege also ein char in(MAX) übergeben und muss an eine andere funktion einen String übergeben. Wie übergebe ich dieses in an eine andere Funktion als string???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.04.2004, 11:32 Uhr
Pablo
Supertux
(Operator)


Dann musst du mit eine festen Länge arbeiten, sagen wir mal das f ein FILE* Zeiger ist, der schon mit fopen erstellt wurde.


C++:
char line[1024]; // maximal 1023 Zeichen pro Zeile dard die Datei haben.
FILE* f;
...
fgets(line, 1024, f);



Deine zweite Frage verstehe ich nicht.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.04.2004, 11:38 Uhr
~Tom
Gast


Genau... gutes Beispiel...
in deinem Thread hätte ich jetzt einen String mit max 1023 Zeichen pro Zeile.
Bei mir ist der String noch ein bißchen länger (in einer Zeile).
Und wenn ich jetzt line an die Funktion ersetzen übergeben möchte funzt das nicht.
Bsp:
Code:
char * a = NULL;
a=ersetzen(line);


die Funktion ersetzen erwartet also einen String. Wenn ich anstatt line einen String z.B. "dasisteinstring" übergebe klappt es... warum??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.04.2004, 11:54 Uhr
Pablo
Supertux
(Operator)


Wenn die Zeile mehr als 1023 Zeichen hat, dann würde ich vermuten, dass fgets kein 0-terminiernd string schreibt und ersetzen(char*) ein 0-terminierend string braucht. "dasisteinstring" ist by default 0-terminierend.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.04.2004, 11:57 Uhr
~Tom
Gast


und wie kann ich das ändern??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.04.2004, 12:03 Uhr
Pablo
Supertux
(Operator)


Indem du ein grosseres array benutzt, z.b. char line[40960.

Willst du in C oder C++?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.04.2004, 12:08 Uhr
~Tom
Gast


In C wär nicht schlecht... Aber ich benutze ja schon ein array[MAX_LEN] wobei MAX_LEN eine Konstante von 100000 ist...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
22.04.2004, 12:11 Uhr
Pablo
Supertux
(Operator)


Dann solltest du mit fread Stück für Stück die Datei Lesen, ich weiss nicht, ob es eine Funktion gibt, die ermittelt, welche Grosse die aktuelle Zeile im Buffer hat. Wenn es eine gibt, dann malloc benutzen, sonst würde ich fread benutzen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: