Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zeiger auf struct-Array an Funktion übergeben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.05.2006, 16:01 Uhr
Micha_12345



Hallo,

ich möchte einen Zeiger auf ein struct-Array an eine Funktion übergeben. Das Array soll dann erst in der Funktion "ausgepackt" werden. Um´s an einem einfachen Bsp zu erklären:


C++:
struct daten
{
  char name[20];
  int nummer;
};

struct daten personal[100];


void drucken(struct daten *temp)     // passt das hier ??
{
  int k;
  for(k=0; k<100; k++)
    printf(                                     // wie muss das hier aussehen ??                    
}

void main()
{
  ...
  drucken(personal);                       // wie muss hier die Übergabe aussehen ??
  ...
}



Danke schon mal!

Bearbeitung:
Tags

Dieser Post wurde am 25.05.2006 um 16:35 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.05.2006, 16:38 Uhr
xXx
Devil


mach doch einfach:

C++:
struct Data__
{
    char cName[20];
    int    nNumber;
};

typedef Data__* HDATA;


void Print(HDATA pData)
{
    int k;
    for(unsigned int = 0; i < 100; ++i)
    printf("%d %s", pData->nNumber, pData->cName);
}

int main()
{
    Data__ personal[100];
    Print(&personal);
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.05.2006, 16:39 Uhr
mike
Pinguinhüpfer
(Operator)


Du hast ein Array aus structs. Also würde ich sagen:

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

struct daten
{
char name[20];
int nummer;
};

struct daten personal[100];

void drucken(struct daten *temp)
{
int k;
for(k=0; k<100; k++)
  printf("%s %d\n", temp[k].name, temp[k].nummer);
}

int main()
{
  strcpy(personal[0].name, "Huber Sepp");
  personal[0].nummer = 12;
  strcpy(personal[1].name, "Joe");
  personal[1].nummer = 23;
  drucken(personal);
}



lg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.05.2006, 19:44 Uhr
Micha_12345



Danke! Ich habe es nach Mikes Vorschlag gemacht, da er in mein Programm einfacher zu implementieren war und ich nicht in allen anderen Funktionen, die auch auf dieses struct-Array zugreifen alles ändern musste.

Ich hatte auch schon die gleiche Idee, allerdings hatte es bei mir nicht funktioniert. Das Problem war, dass ich beim Prototyp in der Headerdatei nur

void (struct daten)

stehen hatte. Zwei Funktionen die ebenfalls auf die drucken-Funktion zugreifen haben das auch so akzeptiert, die dritte brachte immer den Fehler

error C2664: 'drucken' : Konvertierung des Parameters 1 von 'struct daten [10]' in 'struct daten' nicht moeglich

Erst als ich in der Headerdatei im Prototyp eine Zeigervariable eingefügt hatte

void (struct daten *tmp)

funktionierte es dann. Hat jemand ne Ahnung warum?

Danke
Lg, Micha
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.05.2006, 19:52 Uhr
mike
Pinguinhüpfer
(Operator)


void drucken(struct daten *)

muss es heißen

lg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.05.2006, 19:56 Uhr
Micha_12345



Jepp, ich seh schon, mit den Zeigern muss ich noch ein bisschen üben...


Micha
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: