Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

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

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 ]
010
16.10.2003, 21:21 Uhr
Pablo
Supertux
(Operator)


Dann deklariere die Funktion so:

C++:
char* Permutation(char* ausg, size_t len ,char* Wort,int anz_moeg);



bevor Permutation aufgerufen wird bereitest du dein char* ausg vor, wenn du vorher mit char Ausgabe[1024]); initialisiert hast, dann nichts tun, sondern nur aufrufen. in size_t gibt du die Anzahl der Elemente, z.b. 1024. Das machst du, wenn die Funktion variable Länge von char* aus nehmen soll, aber wenn die Länge immer konstant ist, dann brauchst du size_t gar nicht mehr. Am Schluss machts du

return ausg;
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
16.10.2003, 21:39 Uhr
Anfänger00



Das geht,warum das Programm aber beendet bei 5+ weißich nicht.. ?
Dieser Post wurde am 16.10.2003 um 21:39 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
16.10.2003, 21:41 Uhr
Pablo
Supertux
(Operator)


immer noch?


Bearbeitung:

Sag mir, wo genau stürtzt das ab und mit welcher Fehlermeldung?


Bearbeitung:


C++:
while(i<anz_moeg || ausg[p+g+5] != '\0')



ausg[p+g+5] ist sicherlich falsch. Denn g==strlen(ausg) und das letzte Element des Feldes (vorausgesetzt, dass \0 ganz ma Schluss des Arrays liegt) leigt an strlen(ausg), d.h. ausg[strlen(ausg)]==0.

Du machst aber p+g+5 irgendwann gibt es keine Felder, auf die ausg zeigen kann, weil p+g+5 > Anzahl der Felder. Das gilt falls die Länge der Zeichenkette und des Arrays gleich sein sollte. Was genau willst du machen?


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

Dieser Post wurde am 16.10.2003 um 21:50 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
16.10.2003, 21:48 Uhr
Anfänger00



Keine Fehlermeldun,die Zeichen werden wircklich nicht ausgegeben,auch wenn ich den string in eine Textdatei ausgebe.
Wenn Ausgabe ausgeben wird bricht es ab.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
16.10.2003, 23:57 Uhr
Pablo
Supertux
(Operator)


Und was soll eigentlich die Funktion machen? Eine Permutation ausgeben?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
17.10.2003, 12:53 Uhr
Anfänger00



Ja,das soll sie,aber es klapt ja schon nicht mal bei der Ausgabe von seinem String einer belibigen Größe.
Also muss ich das irgendwie mit new machen..

Dieser Post wurde am 17.10.2003 um 12:54 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
17.10.2003, 14:14 Uhr
Pablo
Supertux
(Operator)


Sag mir was die Parametter deine Funktion machen sollen und wie du willst, wie die Permutation berechnet wird.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
17.10.2003, 15:59 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich habe jetzt nicht alles durchlesen, aber:


Zitat:
Anfänger00 postete
Hallo,

C++:
int mystrlen(const char* buffer)
{
    int x=0;
    while(buffer[x] != '\0')x++; //Strings in C sind Nullterminiert
    return x-1;
};




Dir ist klar, daß das immer ums eins zuwenig zurück gibt?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
17.10.2003, 18:00 Uhr
Pablo
Supertux
(Operator)


Stimmt, ich habe dir diese Funktion schon mal gegeben, aber es muss return x sein und nicht return x-1; Guck mal genau hin. Ich weiß nicht mehr, wann ich da gepostet habe.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
17.10.2003, 18:12 Uhr
Anfänger00



Ok,das array war einfach nur zu klein!
Tja,doch das mit dem x-1 muss aber so sein,auch wenn ihr beide das sagt,es geht nicht anders.
Allerdings kommt bei größeren Ausgaben wie 720*"12356" + 720*"+" + 720*" "
ein wenig speichermüll und zwar nach dem 720 plus(nicht gezählt,aber vermutet,das es bei 24 ausgaben noch geht)
Das werd ich wohl hoffentlich noch durch einen entsprechenden Abruch der Schleife verhindern.

Dieser Post wurde am 17.10.2003 um 18:14 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ 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: