WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 30.11.2003, 18:50   #1
Etienne
Veteran
 
Registriert seit: 31.03.2003
Alter: 37
Beiträge: 403


Etienne eine Nachricht über ICQ schicken
Standard 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
Etienne ist offline   Mit Zitat antworten
Alt 30.11.2003, 18:55   #2
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

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
kikakater ist offline   Mit Zitat antworten
Alt 01.12.2003, 17:43   #3
Etienne
Veteran
 
Registriert seit: 31.03.2003
Alter: 37
Beiträge: 403


Etienne eine Nachricht über ICQ schicken
Standard habe ich nur nicht hingeschrieben

die main funktion lautet:
void main (void)
{
input()
}
Etienne ist offline   Mit Zitat antworten
Alt 02.12.2003, 03:29   #4
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

Hier ein Beispiel, wie man so ein Programm in den Grundzügen ausprogrammieren kann:
kikakater ist offline   Mit Zitat antworten
Alt 02.12.2003, 10:31   #5
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

@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?
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.
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 02.12.2003, 10:51   #6
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

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
kikakater ist offline   Mit Zitat antworten
Alt 02.12.2003, 11:03   #7
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

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.
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 02.12.2003, 11:08   #8
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

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."



Take it easy, it's just Kode, wäh, das pickt !
kikakater ist offline   Mit Zitat antworten
Alt 02.12.2003, 14:28   #9
Etienne
Veteran
 
Registriert seit: 31.03.2003
Alter: 37
Beiträge: 403


Etienne eine Nachricht über ICQ schicken
Standard danke!

danke!
mfg etienne
Etienne ist offline   Mit Zitat antworten
Alt 02.12.2003, 14:51   #10
Etienne
Veteran
 
Registriert seit: 31.03.2003
Alter: 37
Beiträge: 403


Etienne eine Nachricht über ICQ schicken
Standard 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
Etienne ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:32 Uhr.


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