• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ile waży plik (trojański?)

42 Warsaw Coding Academy
0 głosów
653 wizyt
pytanie zadane 26 marca 2020 w C i C++ przez Hubertius Bywalec (2,970 p.)

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ąć? 

komentarz 26 marca 2020 przez tkz Nałogowiec (42,020 p.)
Użyłeś w ogóle googla do szukania problemu?
komentarz 27 marca 2020 przez Hubertius Bywalec (2,970 p.)
Tak. Znalazłem mniej więcej wskazówki do rozpisania funkcji z *f, ale nie mam pomysłu jak mogę otrzymać ten sam rozmiar na podstawie samego wskaźnika na ścieżkę pliku.  :/

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 1,056 wizyt
pytanie zadane 13 kwietnia 2020 w C i C++ przez Hubertius Bywalec (2,970 p.)
0 głosów
1 odpowiedź 1,455 wizyt
0 głosów
1 odpowiedź 577 wizyt
pytanie zadane 2 lipca 2022 w C i C++ przez polandonion Dyskutant (7,630 p.)

93,389 zapytań

142,386 odpowiedzi

322,549 komentarzy

62,750 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...