Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Datei weiterverarbeiten

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 <
000
30.08.2004, 00:05 Uhr
~beginner
Gast


Hallo !

Meine Datei sieht so aus:

234 2334
234 5345
etc.

Öffnen, lesen und ausgeben kann ich die Datei schon.
Ich würde jetzt nur gerne die Zahlen seperat verwenden d.h.
es soll nach einer Zahl in der linken Spalte gesucht werden und dann der
rechte Wert (als double ) weiterverarbeitet werden.
Welche Chancen habe ich in C da.

Vielen Dank !!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.08.2004, 00:11 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


in was für nem datentyp genau und wie hast du die zahlen denn bisher gespeichert?...
in c helfen die vermutlich strtok oder ssacnf

in c++ stringstreams
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.08.2004, 08:23 Uhr
~beginner
Gast


im Moment sind alle Daten in einer Textdatei gespeichert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.08.2004, 08:42 Uhr
0xdeadbeef
Gott
(Operator)


Hm. In C++ wärs einfacher, Fehler anzufangen, aber naja. Im Grunde so:

C++:
#define MAX_MAP_SIZE 512

struct pair {
  int key;
  double value;
};

struct map {
  struct pair field[MAX_MAP_SIZE];
  size_t map_size;
}

void init_map(struct map *m) { m->map_size = 0; }

/* ... */

struct map my_map;
FILE *fd = fopen("datei.txt", "r");
int index = 0;

init_map(&my_map);

while(!feof(fd) && index < MAX_MAP_SIZE) {
  if(fscanf("%d %lf", &my_map.field[index].key, &my_map.field[index].value) != 2) {
    fputs("Fehler beim Einlesen!", stderr);
    fclose(fd); /* Beispiel für Fehlerbehandlung */
    exit(-1);
  }
}
my_map.map_size = index;

/* ... */

int find_value(const struct map *m, int key, double *val) {
  int index;
  for(index = 0; index < m->map_size; ++index) {
    if(key == m->field[index].key) {
      *val = m->field[index].value;
      return 1;
    }
  }
  return 0;
}

double val;
if(find_value(&my_map, 123, &val)) {
  /* Wert gefunden, befindet sich in val */
}


...sowas in der Art, auch wenn man sich in der Realität wahrscheinlich aus Performancegründen keinen statischen Buffer hernehmen würde.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
30.08.2004, 09:21 Uhr
~beginner
Gast


gibt es vielleicht noch eine Erklärung dazu. So ist es mir nicht klar.
Danke.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
30.08.2004, 10:30 Uhr
0xdeadbeef
Gott
(Operator)


Wenn du mir erklärst, welchen Teil davon du nicht verstehst, klar.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
30.08.2004, 10:38 Uhr
~beginner
Gast


ich verstehe schon gar nicht warum ich die Strukturen überhaupt brauche.
Dann die ganze fscanf Geschichte.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
30.08.2004, 12:07 Uhr
0xdeadbeef
Gott
(Operator)


Die Strukturen machen das ganze aufgeräumter - du kannst auch mit zwei großen Arrays arbeiten, wenn dir das lieber ist. Was das fscanf angeht, das funzt genau so wie scanf auch, mit dem Unterschied, dass du aus einer Datei liest. scanf seinerseits arbeitet quasi wie ein umgekehrtes printf, die format strings der beiden sind isomorph - %d für ne Ganzzahl, &lf für nen langen float, also einen double.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
30.08.2004, 16:18 Uhr
~beginner
Gast


alles klar !

Danke schön !!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: