String zuweisen

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
SeriK00
Beiträge: 34
Registriert: Fr Mai 15, 2009 12:15 pm

String zuweisen

Beitrag von SeriK00 » So Mai 24, 2009 4:52 pm

/* 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;
}
Windows XP Prof
Visual Studion 2005
Keil µVision 3

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Sting zuweisen

Beitrag von cloidnerux » So Mai 24, 2009 4:59 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

SeriK00
Beiträge: 34
Registriert: Fr Mai 15, 2009 12:15 pm

Re: Sting zuweisen

Beitrag von SeriK00 » So Mai 24, 2009 5:03 pm

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
Windows XP Prof
Visual Studion 2005
Keil µVision 3

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Sting zuweisen

Beitrag von Kerli » So Mai 24, 2009 6:05 pm

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.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

SeriK00
Beiträge: 34
Registriert: Fr Mai 15, 2009 12:15 pm

Re: Sting zuweisen

Beitrag von SeriK00 » So Mai 24, 2009 6:32 pm

Danke für den Hinweiß.
Mit der Funktion strcpy hats funktioniert.
Windows XP Prof
Visual Studion 2005
Keil µVision 3

Antworten