Seite 1 von 1

String zuweisen

Verfasst: So Mai 24, 2009 4:52 pm
von SeriK00
/* edit by Kerli: Titel ausgebessert */

Guten Abend,
ich habe hier ein kleines Problem.
Ich habe aus Variablen name ein Array gemacht.
Diesen wurde ich gerne einen String zuweisen.
pointer->name = "Serik";
Dies funktioniert leider nicht.
Einzelne chars kann ich zuweisen aber keine ganzen Strings.
Bitte um Hilfe

Code: Alles auswählen

#include <stdio.h>

#define SIZE 128
#define  ERFOLG 0

typedef struct
{
	unsigned char name[SIZE];
	unsigned char nachname;
	unsigned int alter;

}PERSON;

PERSON pers_var_1;
PERSON pers_var_2;
PERSON pers_var_3;
PERSON pers_var_4;

void func_pers_1(PERSON *pointer)
{

	pointer->alter = 	28;
	pointer->name =		"Serik;
	pointer->nachname=	'S';
}
void func_pers_2(PERSON *zeiger)
{
	zeiger->name =		'M';
	zeiger->nachname=	'N';
	zeiger->alter=		23;
}
void func_pers_3(PERSON *ptr)
{
	ptr->alter=			18;
	ptr->name=			'E';
	ptr->nachname=		'S';
}
int main(void)
{
	func_pers_1(&pers_var_1);
	func_pers_2(&pers_var_2);
	func_pers_3(&pers_var_3);

	printf("\n%s", pers_var_1.name);
	printf("\n%c", pers_var_1.nachname);
	printf("\n%d", pers_var_1.alter);
	printf("\n\n");
	printf("\n%s", pers_var_2.name);
	printf("\n%c", pers_var_2.nachname);
	printf("\n%d", pers_var_2.alter);
	printf("\n\n");
	printf("\n%s", pers_var_3.name);
	printf("\n%c", pers_var_3.nachname);
	printf("\n%d", pers_var_3.alter);
	return ERFOLG;
}

Re: Sting zuweisen

Verfasst: So Mai 24, 2009 4:59 pm
von cloidnerux
Es wäre hilfreich eine Fehlermeldung zu bekommen.
Aber ich glaube das hinzufügen des fehelenden " in der Funktion void func_pers_1(PERSON *pointer) sollte helfen.

Re: Sting zuweisen

Verfasst: So Mai 24, 2009 5:03 pm
von SeriK00
Vielen Dank aber die Anführungsstiche waren nicht das Problem.

Hier idt die fehlermeldung:
../dummy.c: In function `func_pers_1':
../dummy.c:23: error: incompatible types in assignment

Re: Sting zuweisen

Verfasst: So Mai 24, 2009 6:05 pm
von Kerli
SeriK00 hat geschrieben:pointer->name = "Serik";
Dies funktioniert leider nicht.
Einzelne chars kann ich zuweisen aber keine ganzen Strings.
Das ist ganz klar, dass das nicht geht. Bei einzelnen Chars änderst du den Wert der in der Struktur steht, bei einem Array hast du nur einen Zeiger auf eine Speicheradresse an der für SIZE Chars ein Platz reserviert ist. Wenn die jetzt versuchst diesen Zeiger auf den Anfang des temporären Strings zeigen zu lassen führt das logischerweise zu Fehlern. Damit es funktioniert so wie du willst musst du zb. mit strcpy() den String kopieren.

Re: Sting zuweisen

Verfasst: So Mai 24, 2009 6:32 pm
von SeriK00
Danke für den Hinweiß.
Mit der Funktion strcpy hats funktioniert.