FILE *pointer;
-
Hallo,
kann jemand mir bei dieser Aufgabe helfen.nicht die komplete Lösung.
ich habe problem bei die Rückgabewerte.wie kann ich die 0 und 1 und -1 zuruckgeben.
für die Antwort bedanke ich mich.
hier ist die Aufgabe:/****************************************************************/
ein Betrieb bestimmt stündlich seinen Energieverbrauch,der sich aus den Anteilen 'Grundverbrauch' und 'Spitzenverbrauch' zusammensetzt.Diese stündlichen Werte werden zunächst in einen temporärne Datenpuffer abgelegt um dann, nach einem Tag, aufaddiert als Tageswerte 'Grundverbrauch ' bzw. 'Spitzenverbrauch'in eien Datei geschrieben zu werden.
Gegeben : sei eine Datei mit Namen verbrauch.dat(das ist egal) auf Betriebssystemebene und ein Dattenpuffer ,dargestellt als ein Feld bestehend aus STD Elementen des Datentyp ev;
/*Feldgrösse STD:=Anzahl Stunden pro Tag*/
#define STD 8/*Datentyp ev eines Feldelementes*/
typedef struct
{
double gv; /*Grundverbrauch*/
double sv; /*Spitzenverbrauch*/
}ev;**Problembeschreibung:**Erstellen Sie eine (int-) Funktion pufferdatei, die als Funktionsargument den beschreibenden Datenpuffer übernimmt , die Datei verbrauch.dat öffnet (Zugriffsart: Schreiben ab Dateiende) und ,falls dies möglich war , die Tageswerte 'Grundverbrauch' bzw.'Spitzenverbrauch' berechnet und in dieser Reihenfolge, formatiert als double-Werte , an das aktuelle Ende der Datei schreibtt und diese danach schließt .Die Rückgabewerte de Funktion sind defeniert durch:
-1: Datei kann nicht geöffnet werden
0 : Funktion fehlerfrei
1: Fehler beim Schreiben auf Dateiich danke euch für die Hilfe
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define STD 8typedef struct
{
double gv;
double sv;
}ev;int pufferdatei(ev *S);
main()
{
ev S[STD];
int b;
b=pufferdatei(S);
switch(b)
{
case -1:;break; //hier habe ich problem.wie kann die funktion aufgerufen
case 0:;break;
case 1:;break;
}
}int pufferdatei(ev *S)
{
int i;
FILE *pt;
pt=fopen("vberbrauch.dat","r");
if(!pt)
{
printf("Datei kann nicht geoeffnet werden\n");
return (-1);
}
else if(pt)
{
while(!feof(pt))
{
fscanf(pt,"%lf,%lf",S[i].gv,S[i].sv);
i++;
}
return (0);
}
else
{
printf("Fehler beim Schreiben auf die Datei\n");
return (1);}
}
-
Morgen karim678, womit hast du dabei Probleme? Die komplette Lösung wird dir hier hoffentlich niemand einfach so posten. Am besten zeigst du mal wie deine Funktion bisher aussieht und woran es hapert.
-
Also für den ersten Blick ist schon Recht, obwohl ich nicht recht verstehe warum bei Dir immer "case X:;break;" steht. Fehlt da noch was ?
Ansonsten wirst Du wohl immer ein -1 zurückkriegen, wenn deine Datei "verbrauch.dat" heißt Du aber versuchst
pt=fopen("vberbrauch.dat","r")
zu öffnen.
Dann ist deine Fehlerausgabe etwas irreführend. Mit ´nem "r" kannst Du nur lesen (was du ja auch mit fsanf() machen kannst), aber als Fehlermeldung erzählst Du dem Anwender, das er nicht schreiben kann....