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

C++, operacje na plikach o dowlonej nazwie

Object Storage Arubacloud
0 głosów
195 wizyt
pytanie zadane 25 grudnia 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)

Hej, wiem że pytanie może się okazać nielogiczne oraz powodować poważne błędy ale wiem że musi być na ten problem jakieś rozwiązanie. Pisze program do xor'owania i coś takiego mi się przyda. Podam najpierw jakiś przykład:

file_stream.open("stream.txt", std::ios::in); //gdyby to mogło mieć dowolną nazwę 
file_key.open("key.txt", std::ios::in); //to OK

Program czytuje informacje z konkretnych plików, chciał bym jednak by na miejsce "stream.txt" mógł zostać otwarty obojętny plik z obojętnym rozszerzeniem. W sensie by to nie było określone z góry. Potrzebne jest to bo program ma xor'ować różne rzeczy. Dokumenty tekstowe, pliki.exe, .bat, itd... Wiem oczywiście że to użytkownik może wpisać nazwę interesującego go pliku. Czy da jednak się zrobić coś takiego? Wiem że to może być paradoks bo będzie kilka plików i co wtedy? Słyszałem o znakach globalnych takich jak '*' ale jakoś to mi tu nie działa. Dziękuje za chodź informacje czy to jest możliwe :) Serdecznie pozdrawiam

1 odpowiedź

+1 głos
odpowiedź 25 grudnia 2017 przez obl Maniak (51,280 p.)

Nie wiem o co dokładnie ci chodzi, ale gdybym miał zrobić coś takiego to otwierał bym pliki w trybie binarnym. Plik sksorowany musi zawierać informacje o rozszerzeniu wynikowego pliku. Można to zrobić tworząc nagłówek pliku. Sksorowany plik zapisywałbym z moim własnym rozszerzeniem np. xor, dla odróżnienia od innych plików. Kolejna sprawa to jak chcesz udostępnić użytkownikowi możliwość wyboru pliku. Można sprawić, że użytkownik poda np. "*.jpg" i na tej podstawie program sksoruje pliki jpg ale tylko jeżeli sam to obsłużysz prawidłowo. W zależności od tego w czym programujesz można zastosować inne rozwiązania. Myślę, że w Qt Creatorze byłoby to najłatwiejsze. Pozyskanie listy plików wyglądałoby mniej więcej tak:

QDir dir(path);
QStringList filterList = { "*.jpg", "*.gif" };
list = dir.entryInfoList(filterList, QDir::Files, QDir::Name);

Oczywiście w C++ są też dostępne funkcje umożliwiające utworzenie listy plików o danym rozszerzeniu w podanej lokalizacji ale to będzie wymagało napisania przez ciebie większego kawałka kodu i będzie też zależało od tego pod jaki system operacyjny piszesz (pewnie Windows).

Podobne pytania

0 głosów
3 odpowiedzi 2,055 wizyt
pytanie zadane 14 stycznia 2017 w C i C++ przez Gapsiu Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 224 wizyt
0 głosów
1 odpowiedź 298 wizyt

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...