ich habe folgendes Problem:
Es werden drei elemente nacheinander in array eingelesen und in die struct person eingefügt.
In der Funktion: void array_schreiben(char *pointer, person pers) will ich alle drei Elemente auf die adresse von pointer schreiben (pointer verweist ja auf array).
Hinterher soll sowas rauskommen: (100NameVorname).
Also ich schreibe ID und erhöhe den Pointer um Größe von ID usw.
Das klappt leider nicht.
Ich weiß, das man das Problem schlicht durch strcat lösen kann, ich will aber den Umgang mit Pointer erlernen.
vielen Dank im Voraus.
Code: Alles auswählen
#include "stdafx.h"
#define SIZE 10
typedef struct person
{
int id;
char vorname [SIZE];
char nachname [SIZE];
};
void array_schreiben(char *pointer, person pers);
char array[100];
int _tmain(int argc, _TCHAR* argv[])
{
person pers;
puts("\nBitte ID eingeben: ");
gets(array);
pers.id = atoi(array);
printf("\n%d", pers.id);
puts("\nBitte VORNAME eingeben :");
gets(array);
strcpy(pers.vorname, array);
puts(pers.vorname);
puts("\nBitte NACHNAME eingeben :");
gets(array);
strcpy(pers.nachname, array);
puts(pers.nachname);
array_schreiben(array, pers); //array ist ein Zeiger auf ein char array
return 0;
}
void array_schreiben(char *pointer, person pers)
{
char ram[4];
itoa(pers.id, ram, 10);
strcpy(pointer, ram);
pointer+=pointer+sizeof(pers.id); //pointer um die größe des Elements pers.id erhöhen
strcpy(pointer, pers.vorname); //pointe muss eingentlich auf die 1. Adresse anch pers.id zeigen tut er aber nicht
printf("\n Adresse vom pointer %p", pointer);
pointer+=sizeof(pers.vorname); //pointer um die größe des Elements pers.vorname erhöhen
strcpy(pointer, pers.nachname);
pointer+=sizeof(pers.nachname);
printf("\n%s", array);
printf("\n%s", pointer); //Hier sollen alle drei Eingaben hintereinander stehen
}