Diskuze: datove subory
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Skús takto:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *f;
f = fopen("ceny.dat", "wb+");
int cena = 1,max=0;
while (cena != 0)
{
printf("Zadaj cenu(zadavanie ukoncis 0):");
scanf("%d", &cena);
fwrite(&cena,sizeof(cena),1,f);
}
fseek(f, 0, SEEK_SET);
while (1) {
fread(&cena, sizeof(cena), 1, f);
if (cena > 0) {
printf("cena knihy:%d\n", cena);
max = cena > max ? cena : max;
}
else
break;
}
printf("\nmaximalna cena je %d.\n\n", max);
fclose(f);
return 0;
}
Aby to bolo bližšie tomu tvojmu:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *f;
f = fopen("ceny.dat", "wb+");
int cena,max=0;
for (;;)
{
printf("Zadaj cenu(zadavanie ukoncis 0):");
scanf("%d", &cena);
if (cena == 0)
break;
else
fwrite(&cena,sizeof(cena),1,f);
}
fseek(f, 0, SEEK_SET);
while (1) {
fread(&cena, sizeof(cena), 1, f);
if (feof(f))
break;
else {
printf("cena knihy:%d\n", cena);
if (cena > max)
max = cena;
}
}
printf("maximalna cena je %d.", max);
fclose(f);
return 0;
}
dakujem .. ale predsa by ma zaujmalo co tam spôsobuje že sa ten posledny prvok vypise 2x
Pre toto:
while (!feof(f)) {
printf("feof = %d\n", feof(f)); // pre toto = vypis hodnoty feof()
fread(&cena, sizeof(cena), 1, f);
printf("cena knihy:%d\n", cena);
if (cena > max)
max = cena;
}
dakujem .. ale predsa by ma zaujmalo co tam spôsobuje že sa ten posledny prvok vypise 2x
Než data použiješ (vypíšeš), zkus testovat, zda jsi je opravdu načetl (funkce fread vrátí počet načtených elementů (pro tebe 1)).
Zobrazeno 6 zpráv z 6.