Linker Operand soll L-Wert sein/Strukturen

Das ist nur eine Compilerwarnung, oder?
Oder wirklich ein Fehler?

Zu welcher Zeile wird das gezeigt?

Das tritt auf, weil du nichts in person gespeichert hast
und trotzdem schon an die Funktion übergibst.

Warum übergibst du das überhaupt,
wenn dich der Wert in der Funktion sowieso nicht interessiert?
 
Jup, das ist eine Compilerwarnung. Also wenn ich mit Einzelschritt F11(Visual C++ 2008) durchgehe dann kommt ein Fenster wo das steht mit "The variable 'person'..." in der Zeile 69.

Entweder ich schreibe direkt im Unterprogramm "personendaten p;", oder ich mache es mit Pointern das müsste auch gehn oder, also z.B personendaten* person?
 
Wäre es eventuell nicht besser das man die Strukturen im Hauptprogramm ausgibt.

Unser Professor sagt immer das wir möglichst immer im Hauptprogramm ausgeben sollen, dass nur im Unterprogramm die Funktionen stehen.

Dadurch das in der Textdatei mehr wie eine Adresse mit Schuhgröße kleiner 38 vorkommen, kann kann ich das schonmal mit "return"(struktur ins hauptprogramm übergeben) vergessen, da man ja nur eine Zahl bzw. eine Adresse übergeben kann...

1. Möglichkeit: Ginge das, wenn ich eine Adresse mit einer Schuhgröße kleiner 38 finde, dass ich dann danach gleich die Struktur mit einem return-Befehls ins Hauptprogramm übergebe, aber wie komme ich dann ins Unterprogramm wieder zurück?

Hat jemand vielleicht ein paar Tipps oder so?


Anderes Problem:
Ich habe das ganze nun versucht mit Pointer zu schreiben, aber wenn ich "Starten ohne Debugging klicke" STRG+F5, dann kommt das "schwarze Fenster(wo ausgegeben wird)" und danach ein Weiteres Windows-Fenster worin steht:

"name des programms".exe funktioniert nicht mehr.
Das Programm wird aufgrund eines Problems nicht richtig ausgeführt. Das Programm wird geschlossen und Sie werden benachrichtigt, wenn eine Lösung verfügbar ist.

Hier das Bsp:
C++:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>

#define MAXSTRING 100

struct adresse
{
  char  vorname[MAXSTRING];
  char  nachname[MAXSTRING];
  char  strasse [MAXSTRING];
  char  ort[MAXSTRING];
  char  PLZ[MAXSTRING];
};

struct personendaten_struct
{
  struct adresse *adresse;
  char  schuhgroesse[MAXSTRING];
  char  groesse[MAXSTRING];
};

typedef struct personendaten_struct personendaten;

void search_print_Person(FILE* text);

void search_print_Person(FILE* text)
{
  int x=0;
  int i=0;
  char temp='x';
  personendaten *p=NULL;

  while(!feof(text))
  {	
	fgets(p->adresse->vorname, sizeof(p->adresse->vorname), text);
	fgets(p->adresse->nachname, sizeof(p->adresse->nachname), text);
	fgets(p->adresse->strasse, sizeof(p->adresse->strasse), text);
	fgets(p->adresse->ort, sizeof(p->adresse->ort), text);
	fgets(p->adresse->PLZ, sizeof(p->adresse->PLZ), text);
	fgets(p->schuhgroesse, sizeof(p->schuhgroesse), text);
	fgets(p->groesse, sizeof(p->groesse), text);
  
    fscanf(text,"%c",&temp);
    i=atoi(p->schuhgroesse);

	if(i < 38)
	{
	  printf("%s",p->adresse->vorname);
	  printf("%s",p->adresse->nachname);
	  printf("%s",p->adresse->strasse);
	  printf("%s",p->adresse->ort);
	  printf("%s",p->adresse->PLZ);
	  printf("Schuhgroesse:%s",p->schuhgroesse);
	  printf("Groesse:%s",p->groesse);
	  printf("\n");
	}
  }
}

int main()
{
  FILE*text = NULL;

  text=fopen("adressen.txt","r");
  if(text == NULL)
  {
    printf("Fehler beim LESEN der text adressen.txt");
	exit(-1);
  }

  search_print_Person(text);
  fclose(text);

  return(0);
}
 
Erstes Problem: Du kommst gar nicht mehr ins Unterprogramm zurück.
Entweder du teilst es in zwei Up.s auf, oder machst einen Parameter, dem du 1 oder 2 übergibst, welche Hälfte ausgeführt werden soll (innen dann mit if), oder...

Der Grund, dass man Eingaben/Ausgaben etc. möglichst zentral halten soll (und nicht über alle Klassen verstreuen soll): Wenn man dasProgramm von der Konsole zu einer grafsichen GUI umscheribt (oder umgekehrt, oder...),
ist es einfach weniger Aufwand, wenn die Eingaben/Ausgaben nicht verstreut sind.

Gruß
 
Danke, aber wo ist der Fehler mit den Pointern, oben habe ich das Programm gepostet und das Problem auch dazu geschrieben.

Kann bitte jemand wer drüber schaun :)?
 
Zurück