Witam,
stawiam pierwsze kroki w programowaniu, na ogół radziłem sobie sam, jednak w tym przypadku mam problem na tyle dla mnie upierdliwy, że postanowiłem się zwrócić o pomoc. Otóż mam za zadanie stworzyć klasę do zarządzania plikami binarnymi w języku C, używając do tego funkcji fopen, fclose, fwrite, fread etc. Klasa ma posiadać podstawowe konstruktory do otwierania pliku o podanej nazwie (tryb "a+b"), destruktor, który zamyka plik, konstruktor i operator do kopiowania. Do tego metody do zapisu i odczytu danych oraz licznik otwartych plików zwracany w metodzie.
To co mam do tej pory ( bardziej zlepek tego, co udało mi się znaleźć w internecie, niż to co napisałem sam) :
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
class plik
{
private:
FILE *file;
char *name;
protected:
static int counter;
public:
plik()
{
name = "dane.txt";
file = fopen(name, "a+b");
if (file == NULL)
{
printf("Blad");
}
else
{
printf("Ok");
counter++;
}
}
plik(const char *nazwa)
{
file = fopen(nazwa, "a+b");
if (file == NULL)
if (file == NULL)
{
printf("Blad");
}
else
{
printf("Ok");
counter++;
}
}
plik(const char &nazwa);
void operator=(const plik &nazwa);
~plik()
{
fclose(file);
counter--;
}
void Zapisz(const char *teksDoZapisu)
{
size_t zapisanychElementow = fwrite(teksDoZapisu, sizeof(char), strlen(teksDoZapisu), file);
printf("Dlugosc tekstu = %d\n", strlen(teksDoZapisu));
printf("Zapisanych elementow = %d\n", zapisanychElementow);
}
void Odczytaj()
{
const int ROZMIAR_BUFORA = 1024;
char bufor[ROZMIAR_BUFORA];
size_t odczytanychElementow = fread(bufor, sizeof(char), ROZMIAR_BUFORA, file);
printf("Odczytanych elementow = %d\n", odczytanychElementow);
}
static int LiczbaOtwartych()
{
return counter;
}
};
int plik::counter = 0;
int main()
{
plik plik("aaa.txt");
plik.Zapisz("asasaas");
plik.Odczytaj();
printf("%d\n", plik.LiczbaOtwartych());
}
Konstruktor domniemany nie działa tak jak powinien ( albo nie działa wcale :( ), to samo licznik, nie mam też za bardzo pomysłu na konstruktor i operator do kopiowania. Póki co, dla przyjemniejszego testowania, badałem działanie programu na plikach tekstowych. Prosiłbym o jakieś porady.
Pozdrawiam.