Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem beim dynamisch machen eines Programmteils

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 < [ 2 ]
000
08.12.2003, 16:59 Uhr
~Benny
Gast



C++:
int load_menue_programme(
    char hm_window1[100],
    char hm_window2[100],
    char hm_window3[100],
    char hm_window4[100])

  FILE *datei2;

  datei2 = fopen("Setting\\m_prog.set","r");

    fscanf(datei2, "%s\n", hm_window1);
    fscanf(datei2, "%s\n", hm_window2);
    fscanf(datei2, "%s\n", hm_window3);
    fscanf(datei2, "%s\n", hm_window4);

  fclose (datei2);

return 0;
}



Inhalt der m_prog.set:


Code:
Taschenrechner
W?hrungsrechner
Kilometerverbrauch
Herschlagrechner



Mein Problem ist, dass ich ein dynamisches Menü machen will. Ich bräuchte eine Variable die ich irgendwie hochzählen könnte oder so.
Ich hab bei Zahlen oder einzelnen Zahlen kein Problem, da kann ich ja mit einfachen Arrays arbeiten. Bsp.: Zahl[ i ], dann kann ich in einer Schleife mir sehr viel Quelltext sparen und auch dynamischer progn.
Ich weiß nicht wie das mit zweidimensionalen Char Arrays ist, aber mein Problem liegt darin, dass die Länge der Wörter in der m_prog.set variieren können.
Vielleicht kommt man weiter wenn man die Zeilen zählen lässt. Ich zerbrech mir schon das ganze Wochenende den Kopf wie ich das Problem lösen kann.
Bitte um Hilfe, Vorschläge. (Bin relativ unerfahren; verwende borland c und XP)

Dieser Post wurde am 08.12.2003 um 19:08 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.12.2003, 17:01 Uhr
~Benny
Gast


Bei Bsp.: Zahl
sollte eigentlich danach eine Arrayklammerstehen mit dem Inhalt I (Hilfsvariable).
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.12.2003, 17:18 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


kannst du c++ verwenden oder muss es c sein?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.12.2003, 17:34 Uhr
0xdeadbeef
Gott
(Operator)


Du hast so oder so in C das Problem, dass du den Speicher vorher anfordern musst, also u.U. bevor du weißt, wie lang der Text eigentlich ist. Um das wirklich dynamisch zu machen, ist eine ganze Menge Aufwand nötig, ne verkettete Liste zum Beispiel. Oder du benutzt C++, da gibts die STL, die dir die Arbeit schon abnimmt. Zum Beispiel so:

C++:
#include <iostream>
#include <list>
#include <string>
#include <fstream>

//...

std::list<std::string> menu; //Liste von Strings
std::ifstream fin("Setting\\m_prog.set");
std::string s;

while(!fin.eof()) {
  std::getline(fin, s);
  menu.push_back(s);
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.12.2003, 23:23 Uhr
~Benny
Gast


Sorry dass ich mich erst jetzt melde.

Es sollte wenn möglich leider c sein, da wir in der Schule noch nicht c++ haben und ich meine Arbeit als Zusatzprojekt abliefern möchte. Um das ganze etwas eleganter zu machen sollte ich das Programm relativ schlank halten und da bin ich noch am arbeiten. Ich denke ich werde auch so eine Lösung finden, und wenn ich eine Funktion hab die etwas länger ist, hauptsache in den Hauptteilen wird es schlanker. Danke für die Tips, wenn jemand ne Lösung für c hat würde ich natürlich auch nicht nein sagen. :o)

grüßer benny
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.12.2003, 00:01 Uhr
0xdeadbeef
Gott
(Operator)


In C wird das kompliziert, weil du erst, nachdem du es eingelesen hast, weißt, wieviel du einlesen musst. Das ist möglich, aber nicht trivial. Die Grundidee ist, entweder in einen Buffer einzulesen, zu prüfen, ob es eine ganze Zeile war, und wenn nicht, den Buffer zu vergrößern, oder wahlweise ein Zeichen zur Zeit einzulesen, prüfen, ob es das Zeilenende ist und wann immer es nötig ist, den Buffer zu vergrößern (realloc). Was die Länge des Menüs angeht, das löst man entweder auf dieselbe Art, in dem man eintragsweise einliest und ggf. den Buffer vergrößert, oder mit einer verketteten Liste.

Ich werde dir aber den Code nicht vorkauen, davon lernst du nämlich nichts.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.12.2003, 10:50 Uhr
~Einarmiger bandit
Gast


kann mir jemand sagen wie ich einen Einarmigen Banditen über C++ programmieren kann? , am besten währe es wenn mir jemand ein ganzes Programm senden kann (-,

danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.12.2003, 10:59 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hallo lass mal die doppelposts.
mach lieber für dein Thema einen eigenen Thread auf....
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
11.12.2003, 11:00 Uhr
virtual
Sexiest Bit alive
(Operator)


Es war/ist ein dreifachpost. Er weiß, wie man sich Freunde macht.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
11.12.2003, 13:56 Uhr
~Benny
Gast


Das ich keinen kompletten Code bekomme ist ja ok, aber ich hab mir schon mehrere abende den kopf drüber zerbrochen wie ich das Problem lösen könnte.

Ich will ja auch nur Tips. Aber find es doof, wenn man gleich "verarscht" wird.

Grüßer Benny
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: