Forum: Mikrocontroller und Digitale Elektronik char pointer


von frank (Gast)


Lesenswert?

Hi,

ich muss leider einen char pointer verwenden.

Wie kann ich diesen jetzt mit einem anderen verknüpfen?
Hier ein beispiel wie ich es haben möchte:

char *essen ="heute gibt es: ";
char *menu;
scanf(%s, menu);

//Hier sollten nun die zwei strings zusammengefügt werden
tmp = essen+menu
//
portWriter(tmp);


wichtig ist dabei, das ein char pointer verwendet wird, da die funktion 
einen char pointer benötigt....oder es sollte die möglichkeit geben, ein 
anderes format vorher zu konvertieren.

bin leider neu in branche,

hoffe ihr könnt mir helfen

von Axel K. (axel)


Lesenswert?


von Sven H. (dsb_sven)


Lesenswert?

Da gibt es ne ganze Library mit Stringverarbeitungsfunktionen.

Such mal bei google nach:

c string handling

Ich tippe auf etwa ne halbe Millionen Treffer. Vermutlich hilft dir der 
erste schon weiter.

von frank (Gast)


Lesenswert?

Hi,

danke für die antwort,
aber die funktion funktioniert nur mit arrays, kann das sein?

ich habs gerade so implementiert:

char * essen="Heute gibt es: ";
strcat(juhu, "Käsefondue");

Gruß
Frank

von Peter (Gast)


Lesenswert?

frank schrieb:
> char * essen="Heute gibt es: ";
> strcat(juhu, "Käsefondue");

und warum hast du die variable essen wenn du sie nicht verwendest?

von Peter (Gast)


Lesenswert?

nachtrag:

stell bitte vorher sicher das auch noch Platz in Speicher für das 
Anghänge vorhanden ist, sonst geht es schief.

von Axel K. (axel)


Lesenswert?

Im Prinzip ist eine String ja ein Char Array.

von frank (Gast)


Lesenswert?

sorry, schreib fehler,

ich habs so implementiert:

char * essen="Heute gibt es: ";
strcat(essen, "Käsefondue");

warum hängt er sich bei mir dann beim programmablauf auf?

von frank (Gast)


Lesenswert?

wie stell ich fest ob noch platz für das anhängsel vorhanden ist?

von Axel K. (axel)


Lesenswert?

du kannst speicher mit der fkt malloc() zuweisen - such mal danach. 
Wenns nicht geklappt hat, dann bekommst du das mit.

von frank (Gast)


Lesenswert?

ok..ich habs. ich glaub es war kein platz mehr für das anhängsel, hab 
jetzt n char array gemacht ging genauso.

Super, vielen dank! seit echt gut, ihr jungs!

Gruß Frank

von Peter (Gast)


Lesenswert?

frank schrieb:
> char * essen="Heute gibt es: ";
> strcat(essen, "Käsefondue");
>
> warum hängt er sich bei mir dann beim programmablauf auf?

weil essen eigentlich const (Konstant) ist dort darst du nichts 
anhängen. Du musst dir schon selber dein speicher besorgen.


char test[1024]; // order char* test = (char*)malloc(1024);
strcat(test, "test1;");
strcat(test, "test2;");
strcat(test, "test3;");
strcat(test, "test4;");
strcat(test, "test5;");
printf("%s", test);

von Klaus W. (mfgkw)


Lesenswert?

> warum hängt er sich bei mir dann beim programmablauf auf?

Weil du keinen Speicher hast für den resultierenden String.

Du brauchst ein C-Buch und ein Array von char, um dort den Stringanfang 
reinzukopieren (strcpy) und den zweiten Teil dran zu hängen (strcat).
.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.