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

Co to deskryptor pliku

0 głosów
322 wizyt
pytanie zadane 20 grudnia 2019 w C i C++ przez Jacob7 Użytkownik (540 p.)

Cześć. Może to dziwne pytanie, ale z żadnego wyniku w google nie rozumiem tego pojęcia.
Co to właściwie jest deskryptor pliku? Jak mam tego użyć, jest jakaś funkcja, co to robi w ogóle?

Mam na przykład takie zadanie: Napisz funkcję, która dostaje jako argument ścieżkę dostępu do pliku, otwiera plik do tekstowego czytania i zwraca jako wartość deskryptor świeżo otwartego pliku.

Nie rozumiem totalnie tego pojęcia, a przewija się to we wszystkich zadaniach, które mam zrobić. Proszę o pomoc. Nie chcę rozwiązania zadania, tylko jak ten deskryptor zrobić. C++

2 odpowiedzi

+3 głosów
odpowiedź 21 grudnia 2019 przez Scheduler Mądrala (6,950 p.)
wybrane 21 grudnia 2019 przez Jacob7
 
Najlepsza
Tłumacząc to na język ludzki:

Ponieważ w unix wszystko jest plikiem(a biblioteki std opierają się tak jakby na unixie), to trzeba było wymyśleć sposób, aby można było łatwo rozpoznać plik przez komputer. Ścieżki się do tego nienadawały, więc stworzono deskryptor pliku. Jest to zwykle int, a aby go pobrać używasz funkcji, gdzie jako parametr idzie ścieżka do pliku, a zwracany jest właśnie deskryptor. Czegoś jeszcze nie rozumiesz?
komentarz 21 grudnia 2019 przez Jacob7 Użytkownik (540 p.)
edycja 21 grudnia 2019 przez Jacob7
ifstream plik;
string sciezka="D:\\Program\\zad1.txt";
int funkcja1(string s)
{
	plik.open(s, ios::in);
	/* coś tam */
	plik.close();
	return    ;
}

W miarę rozumiem już o co chodzi.

Czyli standardowo sobie otwieram plik, tylko teraz co dać po return? Muszę zrobić jakąś zmienną i przypisać int x=plik.open, czy jak?

Potem zrobiłem coś takiego i wyświetliło mi "0", czyli chyba działa jeśli  dobrze rozumiem.

Dzięki wielkie za pomoc i Wesołych Świąt wszystkim winksmiley.

ifstream plik;
string sciezka="D:\\Program\\zad1.txt";
int deskryptor;
int funkcja1(string s)
{
	plik.open(s, ios::in);
	/* coś tam */
	plik.close();
	plik >> deskryptor;
	return deskryptor;
}
int main()
{
	int x= funkcja1(sciezka);
	cout << x;
	
    return 0;
}

 

1
komentarz 21 grudnia 2019 przez Scheduler Mądrala (6,950 p.)
W bibliotekach std c++ tak średnio można tą liczbę uzyskać bez kombinowania. Jeżeli musisz uzyskać ta liczbę, to przechodzisz do c. Tam można za pomocą fileno(FILE *struktura) ja wyciągnąć. I jest to w standardzie posix, nie C, więc uważaj. Aby uzyskać wymaganą strukturę poczytaj o otwieraniu plików w C.
komentarz 22 grudnia 2019 przez Jacob7 Użytkownik (540 p.)
Oki dzięki, na zajęciach programujemy w C++, dzięki za pomoc.
komentarz 22 grudnia 2019 przez tkz Nałogowiec (41,840 p.)

http://www.cplusplus.com/forum/general/225282/

Nie wiem co oznacza "bez kombinowania".

#include <fcntl.h>
int main() 
{
    unsigned char buffer[16];     
    int fd = open (argv[1], O_RDONLY);
    read(fd, buffer, sizeof(buffer));
    return 0;
}
komentarz 22 grudnia 2019 przez Scheduler Mądrala (6,950 p.)
Chodziło mi o fstream.
–1 głos
odpowiedź 20 grudnia 2019 przez Mavannkas Bywalec (2,290 p.)
Chodzi o coś w stylu że jeśli plik otwierasz jako np. fstream to funkcja zwraca właśnie ten fstream.
komentarz 20 grudnia 2019 przez Mavannkas Bywalec (2,290 p.)
zmienna przechowująca informacje o tym że plik jest otwarty
komentarz 21 grudnia 2019 przez Jacob7 Użytkownik (540 p.)
Czyli co że na przykład jeśli plik.good()==true to zwróci 1 a w przeciwnym razie 0?
Sorki, że tak tego nie kumam, moglibyście ewentualnie jakimś przykładem w kodzie rzucić najprostszym? Byłbym wdzięczny.
2
komentarz 21 grudnia 2019 przez tkz Nałogowiec (41,840 p.)

Podobne pytania

0 głosów
1 odpowiedź 84 wizyt
pytanie zadane 3 grudnia 2020 w C i C++ przez Mateusz1223 Bywalec (2,440 p.)
0 głosów
0 odpowiedzi 68 wizyt
pytanie zadane 13 stycznia w C i C++ przez Nikso Nowicjusz (140 p.)
+1 głos
0 odpowiedzi 57 wizyt
pytanie zadane 24 września 2021 w JavaScript przez Maxxxii Obywatel (1,080 p.)

86,541 zapytań

135,291 odpowiedzi

300,649 komentarzy

57,288 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...