String in Struct einfügen

Cherrycoke

Mitglied
Hallo,

ich habe ein ganz banales Problem. Und zwar habe ich folgendes kleines Programm:

C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct{
	char* Vorname;
	char* Nachname;
} Eintrag;

int main( void ){
	Eintrag suchen;
	suchen.Vorname = "Hans";
	suchen. Nachname = "Peterson";

	scanf("%s", suchen.Vorname);

	printf("%s %s \n", suchen.Vorname, suchen.Nachname);
	return 0;
}

Ich möchte, dass der Eintrag Vorname aus dem Struct suchen überschrieben wird. Offensichtlich gibt es ein Problem bei der scanf-Funktion.

Ich muss der scanf-Funktion ja eine Adresse übergeben. suchen.Vorname ist doch ebreits eine Adresse, oder? WO liegt denn der Fehler?
 
Hi.

Das Problem ist, dass Vorname ein Zeiger ist welcher auf ein String-Literal zeigt. String-Literale sind nicht-änderbar. Dein Code resultiert in undefiniertem Verhalten!

Du mußt Speicher für den neuen Namen mit malloc oder calloc bereitstellen.

Gruß
 
Zurück