Witam, dlaczego po wykonaniu tego kodu:
#include <iostream>
#include <conio.h>
#include <stdio.h>
int main()
{
FILE* ilosc,*cena;
int ilosc_i = 0;
float cena_jednostkowa = 0.0f;
ilosc = fopen("ilosc.txt","wb");
if (ilosc == NULL)
{
std::cout << "Nie udalo sie utworzyc pliku." << std::endl;
return -1;
}
cena = fopen("cena.txt","wb");
if (cena == NULL)
{
std::cout << "Nie udalo sie utworzyc pliku." << std::endl;
return -1;
}
while(true)
{
std::cout << "Podaj ilosc: ";
std::cin >> ilosc_i;
if (ilosc_i == 0)
break;
fwrite(&ilosc_i,sizeof(int),1,ilosc);
std::cout << "Podaj cene jednostkowa: ";
std::cin >> cena_jednostkowa;
fwrite(&cena_jednostkowa,sizeof(float),1,cena);
}
fclose(ilosc);
fclose(cena);
ilosc = fopen("ilosc.txt","rb");
if (ilosc == NULL)
{
std::cout << "Nie udalo sie utworzyc pliku." << std::endl;
return -1;
}
cena = fopen("cena.txt","rb");
if (cena == NULL)
{
std::cout << "Nie udalo sie utworzyc pliku." << std::endl;
return -1;
}
while(!feof(ilosc))
{
fread(&ilosc_i,sizeof(int),1,ilosc);
fread(&cena_jednostkowa,sizeof(float),1,cena);
std::cout << ilosc_i << " " << cena_jednostkowa << std::endl;
}
fclose(ilosc);
fclose(cena);
getch();
return 0;
}
Otrzymuję o jedną za dużo linijkę przy wypisywaniu ilości i ceny jednostkowej? Ta dodatkowa linijka zawsze jest powtórzeniem ostatnim poprawnej czyli jeśli powinienem dostać:
4 2.2
3 2.3
4 4.5
To dostaje:
4 2.2
3 2.3
4 4.5
4 4.5