Anfänger Problem

I

i125

Code:
//---------------------------------------------------------------------------
//Prüfung 2000
#include <iostream>
#include <fstream.h>
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
//---------------------------------------------------------------------------
struct aktie
{
  char wkn[10];
  char preis[10];
  char datensatz[85];
  float preisatof;
};
aktie merker;
FILE *vin, *vout;                                                            // Zeiger auf den strukturierten Datentyp „Datei“
void uebertragung();                                                         // Forward-Deklaration der Unterprogramme
void ausgabe();                                                              // sie wird benötigt,wenn die Unterprogramme
void konvertierung();                                                        // sich gegenseitig aufrufen
void uebertragung()
{
  int status=1;
  do
  {
    if(fgets(merker.datensatz, 80, vin) == NULL)                             // Einlesen einer Zeile
    {                                                                        // in der Datei kurs_ein.txt. Wenn das Ende
      status = 0;                                                            // erreicht ist (nach beliebig vielen
    }                                                                        // Schleifendurchläufen) wird die Schleife                                                                             // verlassen.
    else
    {
    if(status!=0)
    {
       konvertierung();                                                      // Nach dem Einlesen einer Zeile mit fgets
       ausgabe();                                                            // in der Datei kurs_ein.txt wird die
    }                                                                        // geforderte Konvertierung durchgeführt
                                                                             // und die Ausgabe erzeugt
  }
}
  while(status!=0);
}
//------------------------------------------------------------------------
void konvertierung()
{
  int zaehler=1;
  int i=0;
  int k=0;
  do                                                                         // Auslesen der WKN aus dem Gesamtdatensatz einer Zeile
  {
    if(merker.datensatz[i]==',')                                             // liegt ein Komma als Zeichen im gelesenen
    {                                                                        // Datensatz vor, dann wurde die WKN
      zaehler=0;                                                             // vollständig erfasst
      merker.wkn[i]='\0';                                                    // der WKN-String wird dann mit dem
    }                                                                        // string Abschlusszeichen \0 beendet
    else
    {
      if(merker.datensatz[i]!=',')                                           // ein weiteres Zeichen aus dem gelesenen
      {                                                                      // Datensatz (der aktuellen Zeile)
        merker.wkn[i] = merker.datensatz[i];                                 // wird dem WKN-string
      }                                                                      // zugeordnet
    }
    i=i+1;
  }
  while(zaehler!=0);
  printf("WKN=%s",&merker.wkn);                                              // Bildschirmausgabe des Ergebnisses
  zaehler=1;                                                                 // Reinitialisierung des Abbruchmerkers
                                                                             // i wird fortlaufend weitergezählt
  do                                                                         //Auslesen des Preises (analog zur Beschreibung der WKN)
  {
    if(merker.datensatz[i]==',')
    {
      zaehler = 0;
      merker.preis[k]='\0';
    }
    else
    {
      if(merker.datensatz[i]!=',')
      {
        merker.preis[k]=merker.datensatz[i];
      }
    }
    i=i+1;
    k=k+1;
  }
  while(zaehler!=0);
  merker.preisatof=atof(merker.preis)*1.95583;                               // zur Umrechnung ist eine
                                                                             // Konvertierung von ASCII
                                                                             // nach float nötig
  printf(" WERT=%3.2f\n",merker.preisatof);                                  // Bildschirmausgabe
}
Hallo liebe Kollegen,

ich brauch mal eure hilfe, ich han von C kein plassen Schimmer, kann mir jemand bitte den evt. Fehler mitteilen?

Der Compailer spukt einen Link Fehler aus.
Code:
//------------------------------------------------------------------------
void ausgabe()                                                               // Ausgabe der konvertierten Daten in kurs_dm.txt
{
  fprintf(vout,"WKN=%s WERT=%3.2fDM\n",merker.wkn,merker.preisatof);
}
//-------------------------------------------------------------------------
int main(int argc, char* argv[])
{
vin=fopen("C:\ik02b\BAA\01.txt","r");                                        // Öffnen der Datei zum Lesen
vout=fopen("C:\ik02b\BAA\02.txt","w");                                       // Öffnen der Datei zum Schreiben
uebertragung();
fclose(vin);                                                                 // Schließen der Datei kurs_ein.txt
fclose(vout);                                                                // Schließen der Datei kurs_DM.txt
getch();
return 0;
}
//---------------------------------------------------------------------------
 
Hi,

teil uns doch bitte noch mit, welche Fehlermeldung der Compiler ausgibt, das erleichtert die Fehlersuche auch für andere.

Gruss, Dario

PS: Benutz auch bitte die Code-Tags der Boardsoftware, das formatiert den Code und macht ihn besser lesbar.
 
..am nachdenken ...

hab ma das angschaut ...bei mir funzzt nur dass irgend ein error is wenn man es ausführt
Code:
    if(fgets(merker.datensatz, 80, vin) == NULL)                             // Einlesen einer Zeile
    {                                                                        // in der Datei kurs_ein.txt. Wenn das Ende
      status = 0;                                                            // erreicht ist (nach beliebig vielen
    }                                                                        // Schleifendurchläufen) wird die Schleife                                                                             // verlassen.
    else
    {
    if(status!=0)
    {
       konvertierung();                                                      // Nach dem Einlesen einer Zeile mit fgets
       ausgabe();                                                            // in der Datei kurs_ein.txt wird die
    }                                                                        // geforderte Konvertierung durchgeführt
                                                                             // und die Ausgabe erzeugt
  }
bei if(fgets(merker.datensatz,80,vin)==NULL) (siehe erste zeile)
entsteht ein fehler...ich prüf das ganze mal...
 
Zuletzt bearbeitet:
Code:
vin=fopen("C:\ik02b\BAA\01.txt","r");

ich denke mal diese datei/das verzeichnis existiert gar nicht auf deiner Festplatte, von daher bleibt der filestream für fgets leer und das prog stürzt ab.
 
meinst dass er an das nicht gedacht hat... hmm kann auch sein ..hast bei den unterverzeichnissen eh an den doppelten \\ gedacht
Code:
vin=fopen("C:\\ik02b\\BAA\\01.txt","r");
bzw probier das mal
Code:
if(vin == 0) printf("error");
 
@ Nebuchadnezar -> find du hast recht

Original geschrieben von igfas
Code:
//---------------------------------------------------------------------------
vin=fopen("C:\ik02b\BAA\01.txt","r");                                        // Öffnen der Datei zum Lesen
vout=fopen("C:\ik02b\BAA\02.txt","w");                                       // Öffnen der Datei zum 
//---------------------------------------------------------------------------

die codezeilen werden wohl das prob. sein
da gehören überall \\ rein
 

Neue Beiträge

Zurück