in einem string dynamische länge ablegen

skullknight9

Grünschnabel
Hallo, habe eine frage bezüglich einer aufgabe wollte fragen wie ich die gesamte Begrüßung in einem string dynamischer länge ablegen kann

Aufgabe:
Schreiben Sie ein Programm zur Begrüßung des Users, das zuerst nach dessen Namen
fragt. Speichern Sie letzteren in einem String mit ausreichender Feldlänge ab (z.B. 80 Zeichen).
Die gesamte Begrüßung (z.B. „Hallo Fritzchen!“) soll anschließend in einem String dynamischer
Länge abgelegt wird. Hierzu muss zunächst die Länge des Gesamtbegrüßungsstrings bestimmt
werden, um entsprechend Speicher allozieren zu können. Mit sprintf() sollen dann „Hallo“ sowie der eingegebene Namen in den dynamisch auf dem
Heap angelegten String geschrieben werden, vorausgesetzt die Speicherplatzanforderung war
erfolgreich. Vergessen Sie zuletzt nicht, nach der Ausgabe der Begrüßung den angeforderten
Speicher auch wieder freizugeben.

Mein code:

char name[80];
printf("Geben Sie Ihren Namen ein: ");
scanf("%s", name);

size_t laenge = strlen("Hallo") + strlen(name);


free(gesamtb);
 
scanf gibt die Anzahl Zeichen zurück die eingegeben wurden (bis zum ersten Whitespace-Character)

.... und benutz code-tags
 
nicht wirklich, da ich ja schon die hälfte gemacht habe und noch machen werde habe nur gefragt weil ich diese Zeile: "Die gesamte Begrüßung (z.B. „Hallo Fritzchen!“) soll anschließend in einem String dynamischer Länge abgelegt wird" nicht wusste was ich da machen muss
Dann lies dir nochmal die Doku zu scanf genau durch, weil da stehts drin (und wie ich es auch geschrieben habe).

Übrigens: Denk an des Leerzeichen zwischen "Hallo" und Name.....
 
Dann lies dir nochmal die Doku zu scanf genau durch, weil da stehts drin (und wie ich es auch geschrieben habe).

Übrigens: Denk an des Leerzeichen zwischen "Hallo" und Name.....
so richtig?
int main(int argc, const char * argv[]) {

char name[80];
printf("Name: ");
scanf("%s", name);

size_t laenge = strlen("Hallo") + strlen(name) + 1;

char* gesamtb = malloc((laenge + 1) * sizeof(char));

if (gesamtb !=NULL) {
sprintf(gesamtb, "Hallo %s", name);
printf("%s\n", gesamtb);
free(gesamtb);
gesamtb = NULL;

} else {
printf("Fehler:Speicheranforderung");
}

return 0;
}
 
Zurück