Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

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

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 ] [ 3 ] [ 4 ]
000
23.04.2004, 10:14 Uhr
~Piet
Gast


Hey Leutz,
ich habe ein Programm geschrieben, in dem ich anfangs schreibe:

Code:
char in[10000];
char *p =NULL;
p=funktionsname(in);


Ich übergebe also in und habe in der Funktion auch den Returnwert in. Im weiteren Verlauf möchte ich dann mit dem neuen in weiter arbeiten. Und nun meine Frage:
Wie bekomme ich das was nach dem Funktionsaufruf in 'p' drin steht in 'in' hinein. Einfach schreiben in=p scheint ja nicht zu funktionieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.04.2004, 10:40 Uhr
(un)wissender
Niveauwart


Also, wenn du willst, das in beiden das gleiche Ddrin ist dann kannst du sie auf den selben Speicherbereich zeigen lassen.
Allerdings wird nach verlassen des Gültigkeitsbereichs von in auch p ungültig

C++:
char in[10000];
char *p = &in[0];



Wenn du den Inhalt kopieren willst:

C++:
char in[10000];
char *p = new char[10000];
memcpy(in, p, 10000);
delete [] p;



Das sollte dir helfen, ansonsten muss du ein bisschen mehr konkreten Code zeigen.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.04.2004, 10:42 Uhr
~Piet
Gast


So funktioniert es leider nicht. Wenn ich die funktion nicht aufrufe geht es mit dem normalen in, nachdem ich diese funktion aufrufe und auch memcpy nutze, stürzt das Programm mit dem neuen in ab...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.04.2004, 11:20 Uhr
Pablo
Supertux
(Operator)


Ich glaube, deine Funktion funktion(char*) hat einen Fehler. Postet mal deine Funktion funktion.

Wenn du nur das vom p in in kopiren willst, dann

C++:
strcpy(in, p);


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

Dieser Post wurde am 23.04.2004 um 11:21 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.04.2004, 11:26 Uhr
~Piet
Gast



C++:
char* ersetzen(char *such, char *neu, char *inp)
{
    int len_re = 0;
    int len_repl = 0;
    int len_in = 0;
    int len_new = 0;
    char new_string[100] = {0};
    char *pdest;
    int pos = 0;

    len_re = strlen(such);
    len_repl = strlen(neu);

    if(len_re)
    {
        pdest = strstr(inp, such);    
        while(pdest)
        {
            memset(new_string, 0, strlen(new_string));    
            pos = pdest - inp + 1;    
            len_in = strlen(inp);    

        
            if(pos == 1)
            {
                strcpy(new_string, neu);    
                inp = inp + len_re;            
                strcat(new_string, inp);    
                inp = inp - len_re;            
            }
            else    
            {
                strncpy(new_string, inp, pos - 1);    
                strcat(new_string, neu);            

            
                if(pos + len_re - 1 != len_in)
                {
                    inp = inp + pos + len_re - 1;    
                    strcat(new_string, inp);        
                    inp = inp - pos - len_re + 1;    
                }
            }

            len_new = len_in - len_re + len_repl;

            inp = (char*)malloc(len_new);    
            memset(inp, 0, sizeof(len_new));    
            strcpy(inp, new_string);            

            pdest = strstr(inp, such);        
        }
    }
    return inp;    
}


ich hoffe jemand findet einen Fehler...

Dieser Post wurde am 23.04.2004 um 11:30 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.04.2004, 11:32 Uhr
Pablo
Supertux
(Operator)


So verstehe ich kein Wort. Was soll die Funktion machen und was wofür stehen char *such, char *neu, char *inp?
--
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
23.04.2004, 11:37 Uhr
(un)wissender
Niveauwart


Wie Pablo schon erkannt hat, liegt das Problem in deiner Funktion.
Das was ich vorgeschlagen habe funktioniert so.


Bearbeitung:

Wenn man die Länge des zu kopierenden Bereichs kennt, sollte man immer memcpy einsetzten, ist generell deulich schneller als strcpy.


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 23.04.2004 um 11:39 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
23.04.2004, 11:37 Uhr
~Piet
Gast


die funktion soll einen bestimmten gesuchten string ersetzen.
char *such ist der zu ersetzende String,
char *neu ist der String der an dieser Stelle auftreten soll,
und char *inp ist der InputString den ich übergeben habe, und auch wieder zurückgeben möchte.
Und dieser Rückgabewert wird dann in char * p gespeichert... Ich will aber den Inhalt aus p in das char in[10000] bekommen, da ich das Programm schon weiter geschrieben habe und später nur noch 'in' nutze...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
23.04.2004, 12:23 Uhr
~Piet
Gast



Zitat:
(un)wissender postete


C++:
char in[10000];
char *p = &in[0];






Ich bräuchte es genau anders herum...
char in[] = ???????????????????
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
23.04.2004, 12:35 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@(un)wissender...
wozu gibt es dann strncpy. Ist das schneller als memcpy? an sonsten kann ich ja auch gleich in die tonne treten...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]     [ 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: