Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Zunächst mal kannst Du einen char nicht mit einem Stringliteral initialisieren. Selbst wenn das ein Tippfehler war, und da "char* str" steht, darfst Du nichts anhängen, weil kein Speicher für das zusätzliche Zeichen geholt wurde.

Zweitens musst Du zum Anhängen strcat verwenden. Allerdings akzeptiert strcat kein char als Argument. Und wenn Du die Adresse von zeichen angibst, hast Du ein dickes Problem, weil an der Speicherstelle danach mit sehr hoher Wahrscheinlichkeit kein Nullbyte steht. strcat fügt aber bis zum Stringendezeichen an.

Das sollte es tun:

char str[10];

strcpy( str, "Test" );

char zeichen[2];

zeichen[0] = 'G';

zeichen[1] = 0;

strcat( str, zeichen );

Geschrieben

Leider ist es nicht so einfach :-(


inline char* permutiere(char* Fest,char* Eingabe)
{

char NeuFest[100];
char NeuEingabe[100];
unsigned int counter;

unsigned int len=strlen(Eingabe);

if (len==0)
cout << Fest;
else
{
for (counter=0;counter<len;counter++)
{
strcpy(NeuFest,Fest); // es soll sein: NeuFest=Fest+Zeichen !!??
strcat(NeuFest,Eingabe[counter]);

// hier soll dann sein: NeuEingabe=Eingabe ohne Zeichen !!
}

}

return permutiere(NeuFest,NeuEingabe);

}
[/PHP]

Also es soll in der Schleife der Wert von Fest nach NeuFest kopiert werden. Dann soll an NeuFest das Literal angehängt werden das mit Eingabe[counter] bezeichnet ist.

Z.b.:

Fest="1"

Eingabe[0]="a";

NeuFest=Fest+Eingabe[0]

Thats the prob

Geschrieben

@wasweißich:

Das ist ein und dasselbe, es gibt nicht wirklich einen Unterschied zwischen '\0' und (char)0.

@gugelhupf:


...
unsigned int len=strlen(Eingabe);

[COLOR=red]char szTemp[2];
szTemp[1] = 0;[/COLOR]
if (len==0)
cout << Fest;
else
{
for (counter=0;counter<len;counter++)
{
[COLOR=red]szTemp[0] = Eingabe[counter];[/COLOR]
strcpy(NeuFest,Fest); // es soll sein: NeuFest=Fest+Zeichen !!??
strcat(NeuFest,[COLOR=red]szTemp[/COLOR]);
...
[/CODE]

Mir ist allerdings nicht klar, was Du mit "NeuEingabe=Eingabe ohne Zeichen" meinst. Soll das Zeichen herausgeschnitten werden? Oder soll alles bis zu diesem Zeichen abgeschnitten werden?

Nachtrag:

Da das eine rekursive Funktion ist, solltest Du die Arrays besser auf dem Heap anlegen.

Geschrieben
Original geschrieben von Klotzkopp

Mir ist allerdings nicht klar, was Du mit "NeuEingabe=Eingabe ohne Zeichen" meinst. Soll das Zeichen herausgeschnitten werden? Oder soll alles bis zu diesem Zeichen abgeschnitten werden?

Nachtrag:

Da das eine rekursive Funktion ist, solltest Du die Arrays besser auf dem Heap anlegen.

Heapgeschichten und ähnliches mach ich später...ich ärgere mich nur mit diesen ***** Stringfunktionen herum.

Du hast recht. NeuEingabe=Eingabe ohne Zeichen soll ein String sein der eben das laufende Literal NICHT enthält, ansonsten identisch ist mit Eingabe.

Beispiel:

Eingabe="abcd"

1.Durchlauf: NeuEingabe="bcd"

2.Durchluaf: NeuEingabe="acd"

3.Durchluaf: NeuEingabe="abd"

3.Durchluaf: NeuEingabe="abc"

Wie lösch ich das raus (natürlich am besten mit der laufvariable der schleife *g*) ?

Geschrieben
Original geschrieben von gugelhupf

Wie lösch ich das raus (natürlich am besten mit der laufvariable der schleife *g*) ?

if( counter > 0 ) {
strncpy( NeuEingabe, Eingabe, counter );
}
NeuEingabe[counter] = '\0';
strcat( NeuEingabe, Eingabe + counter + 1 );
[/CODE]

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...