Mam zadanie do zrobienia, całość polecenia brzmi :
Napisz funkcje do obliczania rozmiaru plików, jedna, jako argument, powinna przyjąć ścieżkę do pliku, a druga wskaźnik do pliku. 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 lub -1 w przypadku, kiedy niemożliwe jest jego określenie. Funkcja file_size_from_file nie może modyfikować wskaźnika do pliku. 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, jeżeli obie metody zwróciły ten sam wynik i zakończyć działanie z kodem błędu 0. Jeżeli nie uda się otworzyć pliku program powinien wyświetlić komunikat “Error” i zakończyć działanie z kodem błędu 1. Pamiętaj o tym, żeby zamknąć plik na koniec działania programu.
Przykładowe wejście:
Podaj sciezke do pliku:⏎ text.txt⏎
Przykładowe wyjście (dla pliku text.txt):
Rozmiar pliku wynosi 65 bajtów
Napisałem funkcję przyjmującą wskaźnik do pliku, jednak nie wiem jaka metoda wykorzystuje scieżkę pliku. Proszę o pomoc. Oto mój kod:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int file_size_from_path(const char *path){
int i;
int count = 0;
for(;;){
i = fgetc(path);
if(i == EOF) break;
count++;
}
return count;
}
int file_size_from_file(FILE *f){
int i;
int count = 0;
for(;;){
i=fgetc(f);
if(i == EOF) break;
count++;
}
return count;
}
int main() {
char path[30];
char *p = path;
printf("Podaj nazwe pliku");
scanf("%30s", path);
FILE *fp;
fp = fopen(path, "r");
if(fp == NULL){
printf("Error");
exit(1);
}
//int count1 = file_size_from_path(p);
int count2 = file_size_from_file(fp);
printf("%d", count2);
//if(count1 == count2){
// printf("Rozmiar pliku wynosi %d bajtów", count1);
//}
fclose(fp);
return 0;
}