ich habe für nach den Osterferien eine Arbeit abzugeben, es geht um Datezugriffe und da sind einige Sachen die ich nicht so ganz verstanden habe, das wäre einmal bei:
- fread(const void *ptr, size_t size, size_t Count, FILE *stream): was sagt mir der dritte Parameter(size_t Count) ?
- fwrite(" "): die gleiche Frage ?
- was macht das b in fopen("Hallo.dat","ab") die Datei wir dann im Binärmodus geöffnet, was heisst das und welchen Nutzen habe ich davon ?
Hier nun der Code, ich muss eine Struktur einlesen und diese dann in einer Datei schreiben. Um Zahlen einzulesen und in die Datei zu schreiben, benutze ich fscanf(); und fprintf(); für die Strings benutze ich fgets(); und fputs(); das Problem ist ich würde gerne das nach jedem schreiben des Strings in die Datei, der Pointer an die neue Linie geht, was aber bei fscanf();/fprintf(); nicht der Fall ist sondern nur bei fgets();/fputs(); der Fall ist. Ich würde gerne mit fread(); und fwrite(); arbeiten aber da habe ich einen der Parameter nicht ganz verstanden.

-
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
struct reference
{
long IdReference;
char Nom[50];
char Millesime[5];
char Appellation[40];
float DegreAlcool;
};
void encodage(struct reference *,FILE *);
int main ()
{
FILE *pFile;
pFile=fopen("Datei.dat","w");
if(pFile==NULL)
perror("");
struct reference refe;
encodage(&refe,pFile);
fclose(pFile);
return 0;
}
void encodage(struct reference *pv,FILE *pFile)
{
fflush(stdin);
printf("IdReference:");
fscanf(stdin,"%ld",&pv->IdReference);
fprintf(pFile,"%ld",pv->IdReference);
fflush(stdin);
printf("Nom:");
fgets(pv->Nom,50,stdin);
fputs(pv->Nom,pFile);
fflush(stdin);
printf("Millesime:");
fgets(pv->Millesime,5,stdin);
fputs(pv->Millesime,pFile);
fflush(stdin);
printf("Appellation:");
fgets(pv->Appellation,40,stdin);
fputs(pv->Appellation,pFile);
fflush(stdin);
printf("DegreAlcool:");
fscanf(stdin,"%f",&pv->DegreAlcool);
fprintf(pFile,"%f",pv->DegreAlcool);
}
1234Daniel
1995qwert
12.600000
wann geht der Pointer an die neue Linie ?

