WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   C Programm funktioniert nciht (http://www.wcm.at/forum/showthread.php?t=117246)

Etienne 30.11.2003 18:50

C Programm funktioniert nciht
 
versuche seid Tagen dieses Programm zum laufen zu bringen....

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

#define anzahl 10
#define ESC 27

struct name
{ char vname[41]; char bname[21]; char nname[41]; char sname[41];
};

struct tele
{ unsigned long htele; unsigned long tel;
};

struct HB
{ char hobby[80]; char com[80];
};

struct benutzer
{
struct name nme;
struct tele tel;
char adresse[41];
struct HB hbbcom;
long passwort[anzahl];

}; struct benutzer basic[500], *base;

extern int error;



void name(void); //Prototyp von name

int input()
{

printf("\nSie haben sich entschieden einen neuen Benutzer anzulegen\n");
printf("Die Datei Basic Datei verbraucht %d byte Speicher",sizeof ((*base)));
name();


return (1);
}


//Deffinition von der Funktion name
void name (void)
{
printf("\nBenutzernamen (max 20 Zeichen):");
fgets(base->nme.bname,20,stdin);

printf("\nVorname (max 40 Zeichen):");
fgets(base->nme.vname,40,stdin);

printf("\nNachname (max 40 Zeichen):");
fgets((*base).nme.nname,40,stdin);

printf("\nSpitzname (max 40 Zeichen):");
fgets((*base).nme.sname,40,stdin);

}

Das Programm soll einfach einen neuen Benutzer anlegen können. Dabei sollen einige Daten des Benutzers eingelesen werden und in eine Struktur gespeichert werden. Danke im voraus
mfg etienne

kikakater 30.11.2003 18:55

Wo ist die Funktion main ?

main muss eine andere Funktion wie speichern,einlesen,name oder dergleichen aufrufen um die gewünschten Dinge auszuführen.

Main ist der Einsprungspunkt in das Programm.

mfg Kikakater

Etienne 01.12.2003 17:43

habe ich nur nicht hingeschrieben
 
die main funktion lautet:
void main (void)
{
input()
}

kikakater 02.12.2003 03:29

Hier ein Beispiel, wie man so ein Programm in den Grundzügen ausprogrammieren kann:

Flink 02.12.2003 10:31

@kikakater:
Code:

void show_users (struct s_prg1 *prg1)
{
 int usernr;
 struct s_benutzer *user;
 
 usernr= 0;
 user= get_user(prg1,usernr);

 for(;usernr<prg1->nof_users;usernr++,user++)
 {
  output(user,usernr+1);
 }
}

Warum schreibst du die Initialisierungen der FOR-Schleife nicht gleich hinter das FOR? :confused:
Code:

for(usernr= 0;
    usernr<prg1->nof_users;
    usernr++)
 {
  user = get_user(prg1,usernr);
  if (user != NULL)
  {
    output(user,usernr+1);
  }
 }

Das wäre leichter lesbar und erweiterbar. Dein Programm ist zwar richtig, aber es setzt voraus, dass der Leser die interne Implementation von get_user und dessen Speicherverwaltung kennen muss. Eine C++-Klasse hätte den Vorteil, dass man durch Verwendung von Member-Variablen den Parameter prg1 nicht in allen Funktionen mitschleppen müsste.

kikakater 02.12.2003 10:51

Das fragst Du Dich, gell ?

Zu aller erst: Das Array ist immer mit Userdaten gefüllt bis zum Index nof_users-1 !

1) Die for Schleife arbeitet ein Array ab, get_user ist nur zur Erlangung eines Blackbox Anfangslabels (Startadresse) vonnöten, danach reicht user++.

2) Die Initialisierungen finden vor dem for statement statt - aufgrund langjähriger Erfahrung, das dies besser ist für das Überblicken.

3) Der Test auf user != NULL muss nicht sein, da das Array von 0 - nof_users - 1 belegt ist.

mfg Kikakater

Flink 02.12.2003 11:03

Zitat:

Original geschrieben von kikakater
2) Die Initialisierungen finden vor dem for statement statt - aufgrund langjähriger Erfahrung, das dies besser ist für das Überblicken.
Das ist es, was ich überhaupt nicht kapiere. :eek:

kikakater 02.12.2003 11:08

Du zeigst nur, daß es nicht nur die Wiener sondern auch die Kellner'kenna.

Bissi neidisch sein, bissi hinterrücks, bissi <viel> "oberunterüberdrüber usw."

;)

:smoke: Take it easy, it's just Kode, wäh, das pickt !

Etienne 02.12.2003 14:28

danke!
 
danke!
mfg etienne

Etienne 02.12.2003 14:51

muss lernen
 
kikakater:
danke für dein Bsp. ich glaube ich sollte mal mit was einfacherern anfangen oder noch lernen :). wie viele Jahre programmierst du schon?
mfg etienne


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag