Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Strings kopieren ? (https://www.delphipraxis.net/111284-strings-kopieren.html)

Mark90 1. Apr 2008 15:59


Strings kopieren ?
 
hallo,

ich wollte gerade mal was testen und dabei bin ich auf was merkwürdiges gestoßen!

ich kopiere mit der funktion strcpy einen string in eine char rein und das ergebnis inst richtig komisch!

hier mein code:
Code:
void test(char* string)
{
   strcpy(string, "HELLO");

   std::cout << string << std::endl;
}

int main(void)
{

   char nix;

   test(&nix);

   std::cout << nix << std::endl;


   getch();
   return 0;
}
als ausgabe kommt folgendes raus:

Code:
HELLO // von der funktion test
H // von der main funktion
Wieso ist das so? Hat jemand ne Ahnung?

mkinzler 1. Apr 2008 16:01

Re: Strings kopieren ?
 
Wie sieht den die main aus?

Fussball-Robby 1. Apr 2008 16:04

Re: Strings kopieren ?
 
Ein Char ist nur ein Zeichen, daher wird wahrscheinlich nur der erste Buchstabe wiedergegeben.

Mfg

RavenIV 1. Apr 2008 16:04

Re: Strings kopieren ?
 
Bist Du im falschen Forum gelandet?
Hier ist die Delphi-Praxis und nicht die C-Praxis.

Ich könnte Dir ja jetzt eine lange Story von Pointern und so erzählen, aber ich bin müde, habe Kopfweh und mache deshalb jetzt Feierabend...

Khabarakh 1. Apr 2008 16:12

Re: Strings kopieren ?
 
Zitat:

Zitat von RavenIV
Hier ist die Delphi-Praxis und nicht die C-Praxis

Erstens: Das ist nicht C.
Zweitens: Schonmal bei "Neues Thema" die Auswahl der Programmiersprachen angesehen?
Drittens: Schonmal die Beschreibung der Sparte gelesen?
Viertens: Jemandem zu sagen, man könne das Problem erklären, werde es aber nicht tun, fällt wohl nicht gerade unter "konstruktiv".
Fümpftens: Mit Pointern hat das sowieso nichts zu tun (abgesehen davon, dass er sich mit diesen gerade den Speicher zerschießt). Fußball-Robby hat es schon geschrieben: Wenn man ein Char an den Output-Stream schickt, darf man als Ausgabe auch nicht mehr als ein Zeichen erwarten.
Sechstens: @mkinzler: :gruebel: :mrgreen: ?

RavenIV 1. Apr 2008 16:14

Re: Strings kopieren ?
 
/edit:
Beleidigung entfernt und als pn geschickt.

Khabarakh 1. Apr 2008 16:16

Re: Strings kopieren ?
 
Das gilt jetzt aber nicht, hab doch gerade den Fehler in der Aufzählung behoben :P . Aber danke für das Angebot :cheers: .

mkinzler 1. Apr 2008 16:16

Re: Strings kopieren ?
 
Zitat:

Sechstens: @mkinzler: Grübelnd... Mr. Green ?
Man sollte den Code auch auseinanderfalten :oops:

Mark90 1. Apr 2008 17:20

Re: Strings kopieren ?
 
Zitat:

Zitat von Khabarakh
Zitat:

Zitat von RavenIV
Hier ist die Delphi-Praxis und nicht die C-Praxis

Erstens: Das ist nicht C.
Zweitens: Schonmal bei "Neues Thema" die Auswahl der Programmiersprachen angesehen?
Drittens: Schonmal die Beschreibung der Sparte gelesen?
Viertens: Jemandem zu sagen, man könne das Problem erklären, werde es aber nicht tun, fällt wohl nicht gerade unter "konstruktiv".
Fümpftens: Mit Pointern hat das sowieso nichts zu tun (abgesehen davon, dass er sich mit diesen gerade den Speicher zerschießt). Fußball-Robby hat es schon geschrieben: Wenn man ein Char an den Output-Stream schickt, darf man als Ausgabe auch nicht mehr als ein Zeichen erwarten.
Sechstens: @mkinzler: :gruebel: :mrgreen: ?

ja kollege ich weiß deine frohe botschaft sehr zu schätzen, schau dir das an - - ->

erstens: das ist c: normalerweise hab ich hier immer c fragen stellen können.
zweitens: gibt es diese Auswahl bei programmieren allgemein nicht!.
drittens: ja.
4.: ok
5. Fümpftens schreibt man erstens so: fünftens und den rest hat jemand anders gesagt aber ich nicht.



danke trotzdem an diejenigen, die versucht haben das ein bisschen zu erklären!

Khabarakh 1. Apr 2008 17:50

Re: Strings kopieren ?
 
Und jetzt einmal ganz tief durchatmen, den Thread nochmal durchlesen und realisieren, dass ich dich/deinen Thread verteidigt habe :gruebel: .
Zitat:

erstens: das ist c:
Hu? Wer programmiert hier C++ - ich oder du :stupid: ? Und hinter diese erste Aussage von mir darfst du auch einen fetten ":mrgreen:" setzen, wenn es damit verständlicher wird.

Gelöst ist dein Problem aber noch nicht, wie ich angedeutet habe: Mit deinem String schreibst du über "nix" hinaus und überschreibst den dahinterliegenden Speicher. Für die Lösung musst du aber auf jemanden warten, der von C++ etwas mehr versteht als ich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz