Dobry :)
No więc ile waży? :)
A już bardziej poważnie to treść zadania jest taka:
Napisz dwie funkcje do obliczania rozmiaru plików. Jedna z funkcji powinna przyjąć ścieżkę do pliku jako argument. Druga powinna przyjmować uchwyt pliku (wskaźnik na strukturę FILE).
Prototypy funkcji powinny wyglądać następująco:
int file_size_from_path(const char *path);
int file_size_from_file(FILE *f);
Funkcje powinny zwrócić:
rozmiar pliku,
-1 w przypadku, kiedy niemożliwe jest jego określenie lub
-2 w przypadku podania błędnych danych przy wywołaniu funkcji.
Funkcja file_size_from_file nie może modyfikować wskaźnika pliku. Pamiętaj, że wskaźnik pliku a FILE* to dwie różne rzeczy.
Napisz program, który pobierze od użytkownika ścieżkę do pliku a następnie, wykorzystując przygotowane wcześniej funkcje, obliczy jego rozmiar.
Program powinien wyświetlić rozmiar pliku tylko jeżeli obie metody zwróciły ten sam wynik. W przeciwnym razie powinien wyświetlić komunikat error zakończyć działanie z kodem błędu 0.
Jeżeli nie uda się otworzyć pliku program powinien wyświetlić komunikat Couldn't open file i zakończyć działanie z kodem błędu 4. Pamiętaj o tym, żeby zamknąć plik na koniec działania programu.
Przykład interakcji z programem -- sukces (dla pliku text.txt):
Podaj sciezke do pliku:⏎
Rozmiar pliku wynosi 65 bajtów
Przykład interakcji z programem -- brak pliku:
Podaj sciezke do pliku:⏎
day.txt⏎
Error⏎
Uwaga
W programie nie wolno używać funkcji alokujacych pamięć.
W programie można zadeklarować tylko jedną tablicę na 30 znaków (do przechowywania nazwy pliku). Deklaracja musi wyglądać następująco: nazwa_zmiennej[31];.
W programie nie wolno używać operatora [].
Jeżeli chodzi o kod na razie rozpisałem tyle:
#include <stdio.h>
#include <stdlib.h>
int file_size_from_path(const char *path);
int file_size_from_file(FILE *f);
int main()
{
printf("Podaj sciezke do pliku\n");
char nazwa[31];
scanf("%30s",nazwa);
FILE *f= fopen(nazwa,"r");
if(f==NULL)
{
printf("Couldn't open file");
return 4;
}
const char * path= &nazwa[0];
int wynik_z_rozmiaru_tablicy=file_size_from_path(path);
int wynik_z_rozmiaru_pointer=file_size_from_file(f);
if( wynik_z_rozmiaru_tablicy>=0 && wynik_z_rozmiaru_pointer>=0 && wynik_z_rozmiaru_tablicy==wynik_z_rozmiaru_pointer)
{
printf("To jest rozmiar twojego pliku w bajtach: %d",wynik_z_rozmiaru_tablicy);
}
return 0;
}
int file_size_from_path(const char *path)
{
if(path==NULL)
{
return -2;
}
}
int file_size_from_file(FILE *f)
{
if(f==NULL)
{
return -1;
}
}
Jak mogę to dalej pociągnąć?