Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zahlen aus Datei in Array speichern

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 <
010
04.01.2005, 18:09 Uhr
(un)wissender
Niveauwart


@mike
free ist mallocs Freund...
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
04.01.2005, 19:57 Uhr
~Gast
Gast


Habe das Problem jetzt mit atoi gelöst.


C++:
void DatenEinlesen (void)
{
char puffer[5];
int i=0;        /* Zaehler */
FILE *datei_z;
datei_z= fopen( "DATEI.EIN", "rt" );
while(!feof(datei_z))
   {
    DatenAusDatei[i]= atoi(fgets(puffer, 5, datei_z));
    i= i++;
   }
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
04.01.2005, 20:34 Uhr
Hans
Library Walker
(Operator)


@~gast:
Da ist aber noch eine dicke Unklarheit drin:

C++:
  i = i++;


Es ist zwar nicht falsch, das so zu schreiben, das hab ich gerade extra noch mal getestet, aber verwirrend. Denn es genügt, wenn Du
C++:
  i++;
schreibst. Oder Du verzichtest auf diese C-typische Kurzform, und schreibst gleich
C++:
  i = i+1;


was genau das Gleiche ist.

Dann noch ein Tip wegen dem öffnen der Datei. Wenn Du hier:

C++:
datei_z= fopen( "DATEI.EIN", "rt" );
einen Null-pointer zurück bekommst, weil er die Datei nicht findet oder ähnliches, kann es sein, dass das Programm beim ausführen der nächsten Anweisung abstürzt, oder vom System abgebrochen wird. Deshalb ist eine Sicherheitsabfrage ratsam. Das kann man z.B. so machen:

C++:
if ((datei_z = fopen( "DATEN.EIN", "rt" )) == NULL) // hier wird zuerst fopen aufgerufen, und dann
                            // der Rückgabewert geprüft
    { perror ("Fehler beim öffnen der Datei");        // Im Fehlerfall: Fehlermeldung Ausgeben und
      exit(1);                        // Programm beenden
    }




So, mehr hab ich jetzt erst mal nicht zu "meckern"

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 04.01.2005 um 20:37 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
04.01.2005, 21:11 Uhr
~Gast
Gast


@Hans

Danke für die Tipps.
Die Sicherheitsabfrage habe ich in einer anderen Funktion wo die Datei angelegt wird, falls sie nicht existiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
04.01.2005, 21:44 Uhr
mike
Pinguinhüpfer
(Operator)


@(un)wissender: Da ist sicher was wahres dran - dies würde aber nur dann Sinn machen, wenn man das array wiederverwerten will.
return veranlasst das Programm automatisch sämtliche File-Deskriptoren zu schließen und allokierten Speicher wieder frei zu geben - also entsteht in diesem Fall kein memory leak.
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
04.01.2005, 23:31 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von mike:
@allokierten Speicher wieder frei zu geben

Aber doch nicht den Speicher auf dem Heap. Alles was du selber reservierst musst du selber freigeben, sonst hast du während der Laufzeit ein Leck und alles was nach Programmende passiert ist BS abhängig.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
05.01.2005, 06:58 Uhr
mike
Pinguinhüpfer
(Operator)


@ Guybrush Threepwood:
Stimmt. Laut ANSI ist nur das schließen und flushen der File Descriptoren ein Muss. Das leeren ist anscheinend kein muss. Es heißt "The OS should take care of that; any decent OS should."

mfg michael
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
05.01.2005, 07:52 Uhr
(un)wissender
Niveauwart


Eben...
(I. d. R. tut es das auch, aber guter Stil alles zu löschen ist es allemal.)
--
Wer früher stirbt ist länger tot.
 
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: