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
}
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;
}
//---------------------------------------------------------------------------