Dzwon.

Są ci, którzy przeczytali tę wiadomość przed tobą.
Subskrybuj odbieranie artykułów świeżych.
E-mail
Nazwa
Nazwisko
Jak chcesz przeczytać dzwonek
Bez spamu

Zaprojektowana mechanizacją we / wy nie jest zgodna z ogólnie akceptowanym stylem elementów programowania obiektów, dodatkowo aktywnie wykorzystuje operacje z wskaźnikami, które są uważane za potencjalnie niebezpieczne w nowoczesnych chronionych mediach. Alternatywą dla opracowywania aplikacji aplikacyjnych jest standardowymi klasami we / wy dostarczonymi przez standard języka C ++.

Otwieranie plików

Najczęściej używany klas IfStream do czytania, Ofstream do nagrywania i Fstream do modyfikowania plików.

Wszystkie zajęcia strumieniowe we / wy są pośrednimi pochodnymi generalnego przodków IOS, całkowicie dziedziczenia jego funkcjonalności. W ten sposób tryb otwarcia plików Ustawia typ danych Dane Data Open_mode, który jest zdefiniowany w następujący sposób:

Enum Open_mode (aplikacja, binarna, in, out, Trunc, Ate);

Poniżej znajdują się możliwe wartości flagi i ich cel.

Na przykład, aby otworzyć plik o nazwie test.txt, aby przeczytać dane w formie binarnej, powinieneś napisać:

Plik ifStream; file.open ("test.txt", iOS :: IN | iOS :: binarny);

Logiczne lub (|) Operator umożliwia utworzenie trybu z dowolną kombinacją flag. Tak więc, otwierając plik, nagrywając, przypadkowo nie zamiataj istniejącego pliku o tej samej nazwie, musisz użyć następującego formularza:

Pliku ofstream; file.open ("test.txt", iOS :: Out | iOS :: App);

Zakłada się, że odpowiedni plik nagłówka jest podłączony do projektu:

#Zawierać.

Aby sprawdzić, czy plik zdołany jest otwarty, możesz zastosować projekt

Jeśli (plik) (// przetwarzanie błędu otwierania pliku)

Operatorzy do włączenia i wyodrębniania

Nadrtany w klasie zajęć roboczych włączenie operatora. (<<) записывает данные в файловый поток. Как только вы открыли файл для записи, можно записывать в него текстовую строку целиком:

Plik<< "Это строка текста";

Możesz także nagrywać ciąg tekstowy w częściach:

Plik<< "Это " << "строка " << "текста";

Oświadczenie ENDL uzupełnia wpis ciąg za pomocą symbolu "Powrót wózka":

Plik<< "Это строка текста" << endl;

Korzystając z instrukcji Power, łatwo pisać do wartości wartości zmiennych lub elementów tablicy:

Pliku ofstream ("temp.txt"); Char Buff \u003d "Array tekstowy zawiera zmienne"; int vx \u003d 100; float pi \u003d 3.14159; Plik<< buff << endl << vx << endl << pi << endl;

W wyniku wykonania kodu powstają trzy wiersze pliku tekstowego temp.txt:

Tekst tablica zawiera zmienne 100 3.14159

Należy pamiętać, że wartości numeryczne są rejestrowane w pliku w postaci ciągów tekstowych, a nie wartości binarnych.

Operator wyciągania (\u003e\u003e) wytwarza odwrotną akcję. Wydaje się, że wyodrębnianie znaków z pliku TEMP.TXT nagrał wcześniej, musisz napisać kod podobny:

Plik ifStream ("TEMP.TXT"); Char buff; int vx; Float pi; Plik \u003e\u003e Buff \u003e\u003e VX \u003e\u003e PI;

Jednak operator ekstrakcji zatrzyma się na pierwszy separator, który spadł (przestrzeń, karta lub nowy symbol ciągu). Tak więc, gdy parsując zdanie, "tablica tekstowa zawiera zmienne" tylko słowo "tekst" będzie rejestrowany do tablicy BFF, przestrzeń jest ignorowana, a słowo "macierz" będzie wartością całej zmiennej VX i Wykonanie kodu "zostanie obrócone" z nieuniknionym naruszeniem struktury danych. Następnie podczas omawiania klasy Ifstream zostanie wyświetlone, jak prawidłowo zorganizować plik czytania z poprzedniego przykładu.

Klasa IFStream: Czytanie plików

W następujący sposób z odszyfrowania nazwiska, klasa IFstream jest przeznaczona do wprowadzenia strumienia pliku. Poniżej wymieniono główne metody klasy. Większość z nich jest dziedziczona z klasy Istream i przytłoczony ekspansją funkcjonalności rodzicielskiej. Na przykład, funkcja Get, w zależności od parametru połączenia, jest w stanie czytać nie tylko pojedynczy znak, ale także blok symboli.

Teraz jest jasne, jak zmodyfikować poprzedni przykład użycia Operatora wyciągania danych dał oczekiwany wynik:

Plik ifStream ("TEMP.TXT"); Char buff; int vx; Float pi; File.getline (buff, sizeof (buff)); Plik \u003e\u003e VX \u003e\u003e Pi:

Metoda Getline przeczyta pierwszą linię pliku do końca, a instrukcja \u003e\u003e przypisuje wartości zmiennej.

Poniższy przykład pokazuje dodanie danych do pliku tekstowego z następującym odczytem całego pliku. W czasie (1) cykl jest używany zamiast podczas gdy (File2.eof ()) z powodów, w których omówiono.

#Zawierać. #Zawierać. Za pomocą przestrzeni nazw STD; int Main () (Offstream Plik; File.open ("Test.txt", IOS :: Out | IOS :: App); jeśli (! Plik) (Cout<< "File error - can"t open to write data!"; cin.sync(); cin.get(); return 1; } for (int i=0; i<10; i++) file << i << endl; file.close(); ifstream file2; file2.open("test.txt", ios::in); if (!file2) { cout << "File error - can"t open to read data!"; cin.sync(); cin.get(); return 2; } int a,k=0; while (1) { file2 >\u003e a; if (file2.eof ()) przerwa; Cout.<< a << " "; k++; } cout << endl << "K=" << k << endl; file2.close(); cin.sync(); cin.get(); return 0; }

Poniższy przykład pokazuje cykl odczytu pętli z pliku test.txt i ich wyświetlacz na konsoli.

#Zawierać. #Zawierać. Za pomocą przestrzeni nazw STD; int main () (Plik ifStream; // Utwórz plik pliku pliku.Open ("test.txt"); // Otwórz plik do odczytu, jeśli (! / Statyczny bufor wiersza // Linie odczytu i wyświetlania w pętli do EOF w czasie (! File.getline (str, Sizeof (Str)). EOF ()) Cout<< str << endl; // вывод прочитанной строки на экран cin.sync(); cin.get(); return 0; }

Ten kod w systemie Windows zależy również od obecności pliku symbolu tłumaczenia ciągów w ostatnim rzędzie, byłoby bardziej niezawodne do tego:

While (1) (if (file.eof ()) break; file.getline (str, sizeof (str)); Cout<< str << endl; }

Wyraźne połączenia Otwarte metody i zamknięcie nie są wymagane. Rzeczywiście, wezwanie konstruktora z argumentem umożliwia natychmiast, w momencie utworzenia strumienia pliku, otwórz plik:

Plik ifStream ("test.txt");

Zamiast metody Zamknij, możesz użyć instrukcji Usuń, która będzie automatycznie spowodować zniszcznika obiektu plików i zamyka plik. Podczas gdy kod cyklu zapewnia odpowiednią kontrolę konfiguracji końca pliku.

Klasa Osstream: Nagraj pliki

Klasa OFSTREAM jest przeznaczona do wyjścia danych z strumienia pliku. Dalsze wymienia podstawowe metody tej klasy.

Opisany wcześniej operator integracyjny jest wygodny do organizowania nagrywania pliku tekstowego:

Pliku ofstream ("temp.txt"); Jeśli (! plik) powrót; dla (int i \u003d 1; ja<=3; i++) file << "Строка " << i << endl; file.close();

Pliki binarne.

Zasadniczo dane binarne są obsługiwane jak teksty. Różnica polega na tym, że jeśli dane binarne są zapisywane w określonej strukturze logicznej, należy je odczytać z pliku do zmiennej tego samego typu strukturalnego.

Pierwszy parametr metod zapisu i odczytu (napis / adres bloku) musi mieć typ wskaźnika symbolu Char *, więc konieczne jest wykonanie jawnej konwersji adresu konstrukcji *. Drugi parametr wskazuje, że bloki binarne mają rozmiar stałego bajtu, niezależnie od rzeczywistej długości nagrywania. Poniższa aplikacja zapewnia przykład tworzenia i wyświetlania tego prostego notebooka. Zapisy plików są następnie odczytywane i wyświetlane na konsoli.

#Zawierać. #Zawierać. #Zawierać. Za pomocą przestrzeni nazw STD; Struct Notes (// Struktura danych Nazwa Char; // Pełna nazwa PHAR Telefon; // Telefon Int Wiek; // wiek); Int Main () (SetLocale (LC_ALL, "Rosyjski"); Uwagi Note1 \u003d ("Grozny John Vasielevich", "Nie zainstalowany", 60); Uwagi Note2 \u003d ("Godunov Boris Fedorovich", "095-111-2233", "095-111-2233", 30); Uwagi Note3 \u003d ("Romanov Peter Mikhailovich", "812-333-2211", 20); OFSTREAM Ofile ("notebook.dat", iOS :: binarny); Ofile.write ((Char *) & Note1, Sizeof (uwagi)); // 1st Block ofile.Write ((Char *) & Note2, SizeOf (Uwagi); // 2nd Block ofile.write ((Char *) i Note3, SizeOf (Uwagi)); 3RD BLOKUILE.Close (); // Zamknij nagrany plik ifStream Plik ("Notebook.dat", IOS :: binarny); Uwagi Uwaga; // Studed zmienna CHAR STR; // Static Row Corffer // Przeczytaj wyświetlacz Linie w pętli do EOF w czasie (! Ifile.Read ((Char *) i uwaga, rozmiarof (uwagi). EOF ()) (Sprintf (str, "% s tel:% s Dostawa:% d", Note.Name, note.phone, note.age); Cout<< str << endl; } ifile.close(); // закрыть прочитанный файл cin.sync(); cin.get(); return 0; }

W wyniku wykonania tego kodu plik binarny notebook.dat jest utworzony z trzech bloków 80 bajtów (pod warunkiem, że znaki są jednoosobowe). Oczywiście możesz użyć innych metod strumieniowych i dokonać wszelkich operacji na polach określonej struktury danych.

Klasa FSSTREAM: Dostęp do dowolnego pliku

Przypuśćmy, że 100 wpisów nagromadzonych w naszym notebooku i chcemy policzyć 50-tych. Oczywiście możesz zorganizować pętlę i przeczytać wszystkie rekordy z pierwszego określonego określonego. Oczywiście bardziej skoncentrowanym rozwiązaniem jest ustanowienie wskaźnika pozycjonowania pozycji POS bezpośrednio do napisania 50 i przeczytania:

Ifstream Ifile ("Notbook.dat", IOS :: Binary); Int pos \u003d 49 * sizeof (notatki); ifile.seekg (POS); // Wyszukaj 50. notatki rekordu; // Uwagi - "Rekord" Struktura "Record" Ifile.Read opisany powyżej ((Char *) i uwaga, sizeof (uwagi);

Takie operacje wyszukiwania są skuteczne, jeśli plik składa się z zapisów dobrze znanego i stałego rozmiaru. Aby zastąpić zawartość dowolnego rekordu, należy otworzyć strumień wyjściowy w trybie modyfikacji:

Ofstream Aile ("Notebook.dat", IOS :: Binary | IOS :: ATE); Int pos \u003d 49 * sizeof (notatki); ofile heartp (POS); // Wyszukaj 50th Record Uwagi Note50 \u003d ("Yeltsin Boris Nikolaevich", "095-222-3322", 64); ofile.write ((Char *) i uwaga, rozmiarof (uwagi); // Zastąpienie

Jeśli nie określisz flagi IOS :: ATE (lub iOS :: :: App), a następnie, gdy otworzysz plik binarny notebook.dat. Zostanie usunięty!

Wreszcie, możesz otworzyć plik w tym samym czasie, aby odczytać / zapis, przy użyciu metod odziedziczonych klasą strumienia FSTREAM z jego poprzedników. Ponieważ klasa FSTREAM jest produkowana odpowiednio z IFSTREAM i OSTREAM (IFSSTREAM i OSTREAM rodziców), wszystkie wcześniej wymienione metody stają się dostępne w aplikacji.

Poniższy przykład pokazuje permutację pierwszych i trzecich zapisów pliku notebook.dat.

#Zawierać. #Zawierać. #Zawierać. Za pomocą przestrzeni nazw STD; UWAGI STRUKTOWE (nazwa char; na telefon; Int wiek;); Int Main () (SetLocale (LC_ALL, "Rosyjski); Uwagi Note1, Note3; // Otwórz plik Czytaj / Napisz plik jednocześnie FSTREAM (" Notebook.dat ", IOS :: binary | IOS :: In | IOS :: Out) ; file.seekg (2 * sizeof (uwagi)); // Znajdź i policz Note3 file.Read ((Char *) & Note3, sizeof (notatki); file.seekg (0); // Znajdź i policz plik Note1 .Read ((Char *) i note1, sizeof (notatki)); file.seekg (0); // Uwaga1<== Note3 file.write((char*)&Note3, sizeof(Notes)); file.seekg(2 * sizeof(Notes)); // Note3 <== Note1 file.write((char*)&Note1, sizeof(Notes)); char str; // Считывать и отображать записи в цикле, пока не eof file.seekg(0); // вернуться к началу файла while (!file.read((char*)&Note1, sizeof(Notes)).eof()) { sprintf(str, "%s\tТел: %s\tВозраст: %d", Note1.Name, Note1.Phone, Note1.Age); cout << str << endl; } file.close(); cin.sync(); cin.get(); return 0; }

W projektowaniu plików należy określić flagi IOS :: IN i IOS::, umożliwiając jednoczesne wykonanie operacji czytania i pisania. W wyniku wykonania niniejszego Kodeksu pierwsze i trzeci zapis notebooków plików binarnych.dat zostaną zmienione w miejscach.

Dodatkowe przykłady na ten temat są.

Przed tym, gdy wprowadzasz do wyjścia danych, pracowaliśmy ze standardowymi przepływami - klawiaturą i monitorem. Teraz rozważ, jak w języku C wdrożono dane z plików i nagraj je tam. Przed wykonaniem tych operacji należy otworzyć plik i uzyskać dostęp do niego.

W języku programowania wskaźnik do pliku ma plik typu i jego reklama wygląda jak:
Plik * MyFile;

Z drugiej strony funkcja fopen () otwiera plik do adresu określonego jako pierwszego argumentu w trybie odczytu ("R"), nagrywanie ("W") lub dodawanie ("A") i zwraca wskaźnik do programu . Dlatego proces otwierania pliku i podłączenie go do programu wygląda tak:
Myfile \u003d fopen ("hello.txt", "r");

Podczas czytania lub zapisywania danych do pliku, dostęp do niego jest przeprowadzany za pomocą wskaźnika plików (w tym przypadku MyFile).

Jeśli na podstawie określonych powodów (nie ma pliku pod pod określonym adresem, jest zabroniony dostęp do niego) Funkcja fopen () nie może otworzyć pliku, zwraca null. W prawdziwych programach prawie zawsze obsługuje błąd otwierania pliku w oddziale, a my dalej pominęliśmy.

Funkcja ogłoszenia Fopen () jest zawarta w pliku nagłówka stdio.h, więc jest wymagana do podłączenia. Również w Stdio.H ogłoszony plik typu struktury.

Po zakończeniu pracy z plikiem jest zwyczajowo zamykać, aby zwolnić bufor z danych z danych i z innych powodów. Jest to szczególnie ważne, jeśli program nadal zostanie wykonany po pracy z plikiem. Przerwa komunikacji między plikiem zewnętrznym a wskaźnikiem do niej z programu jest wykonywana za pomocą funkcji FCLOSE (). Wskaźnik do pliku jest przesyłany jako parametr:
Fclose (myfile);

W programie można otworzyć nie jeden plik. W takim przypadku każdy plik musi być powiązany z jej wskaźnikiem pliku. Jeśli jednak program pierwszy działa z jednym plikiem, a następnie zamyka go, wskaźnik może być użyty do otwierania drugiego pliku.

Czytanie z pliku tekstowego i napisz do niego

fSCANF ()

Funkcja FSCANF () jest podobna w znaczeniu funkcji SCANF (), ale w przeciwieństwie do tego wykonuje sformatowane wejście z pliku, a nie standardowy przepływ wejściowy. Funkcja FSCANF () Posiada parametry: Wskaźnik pliku, ciąg formatu, adresy adresów pamięci do nagrywania danych:
FSCANF (MYFILE "% s% d", str, i a);

Zwraca liczbę pomyślnie zbiorników danych lub EOF. Przestrzenie, symbole przejściowe do nowego ciągu są brane pod uwagę jako separatory danych.

Załóżmy, że mamy plik zawierający taki opis obiektów:

Jabłka 10 23.4 Banany 5 25.0 Chleb 1 10.3

#Zawierać. Główna () (plik *; Plik struktura (nazwa znaku [20]; niepodpisana ilość; Cena pływakowa;); Sklep spożywczy struktura [10]; Char I \u003d 0; plik \u003d fopen ("fscanf.txt", "r" ); Podczas gdy (FSCANF (plik,% s% u% f ", sklep [i] .name, & (shop [i] .qty), & (sklep [i] .price))! \u003d EOF) (Printf ( "% s% u% .2f n ", Sklep [i] .name, shop [i] .qty, sklep [i] .price); I ++; ))

W tym przypadku oświadczono strukturę i szereg struktur. Każda linia z pliku odpowiada jednym elementem tablicy; Element tablicy to struktura zawierająca ciąg i dwa pola numeryczne. W jednej iteracji cykl czyta jedną linię. Po zakończeniu pliku FSCANF zwraca wartość EOF, a cykl zostanie zakończony.

fGETS ()

Funkcja FGETS () jest podobna do funkcji Gets () i podejmuje wejście linii z pliku. One FGETS () Wezwanie pozwoli ci przeczytać jedną linię. W tym przypadku możesz czytać nie całą linię, ale tylko jej część początku. Parametry FGETS () wyglądają jak:
FGETS (array_simvolov, Number_name_simvols, Pointer__Fail)

Na przykład:
FGETS (STR, 50, MYFILE)

Wywołanie funkcji będzie odczytywane z pliku powiązanego z wskaźnikiem MyFile, jeden wiersz tekstu jest całkowicie, jeśli jego długość jest mniejsza niż 50 znaków, biorąc pod uwagę symbol "N", który funkcja zostanie również zapisana w szyk. Ostatni (50.) element tablicy STR będzie znakiem "0", dodał FGET (). Jeśli ciąg jest dłuższy, funkcja przeczyta 49 znaków i będzie nagrywać "0" na końcu. W tym przypadku "n" w linii odczytu nie będzie.

#Zawierać. #Define N 80 Main () (plik *; Char ARR [N]; Plik \u003d Fopen ("FSCANF.TXT", "R"); While (FGETS (Arr, N, Plik)! \u003d Null) Printf (" % s ", arr); printf (" n "); Fclose (plik); )

W tym programie, w przeciwieństwie do poprzednich danych, ciąg jest przeczytany ciąg na linię w arrowej tablicy. Po odczytaniu następnego ciągu, poprzednia zostanie utracona. FGETS () zwraca , jeśli nie możesz odczytać następującego ciągu.

getc () lub fgetc ()

Funkcja GETC () lub FGGETC () (także działa) umożliwia uzyskanie innego symbolu z pliku.

while ((ARR [I] \u003d FGGETC (plik))! \u003d EOF) (jeśli (ARR [I] \u003d\u003d " n ") (ARR [I] \u003d " \0 " ; Printf ("% s n ", arr); I \u003d 0; ) Elski I ++; ) Arr [i] \u003d " \0 " ; Printf ("% s n ", arr);

Kod opisany jako przykład wyświetla dane z pliku do ekranu.

Wpis w pliku tekstowym

Jak również wejście, wyjście do pliku może być inne.

  • Wyjście formatu. Funkcja FPrintF (Wskaźnik pliku: Format Line_, zmienne).
  • Postominający wniosek. Funkcja Fundfs (ciąg, plik_daktora).
  • Podsumowanie dźwięku. Funkcja Funkcja Funkcja Funkcja Fundacja Fundc () lub Putc (Symbol, File Search Player).

Poniżej znajdują się przykłady kodu, które używają trzech sposobów wyjścia danych do pliku.

Nagraj do każdej linii pliku pola jednej konstrukcji:

plik \u003d Fopen ("FPrintf.txt", "W"); While (Scanf ("% s% U% F", Shop [I] .name, & (Shop [I] .QTY), & (Shop [Shop [I] .Price))! \u003d EOF) (FPrintf (plik " % s% u% .2f n ", Sklep [i] .name, shop [i] .qty, sklep [i] .price); I ++; )

Ostateczna wyjście do pliku (Funds (), w przeciwieństwie do samego siebie () sama nie umieszcza się na końcu linii "N"):

podczas gdy (Gets (Arr)! \u003d Null) (Funds (Arr, Plik); Funds (" n ", Plik); )

Przykład wyjścia sikającego:

podczas gdy ((i \u003d getchar ())! \u003d Eof) putc (i, plik);

Odczyt z pliku binarnego i napisz do niego

Nie możesz pracować z plikiem jako sekwencję znaków, ale jak w przypadku sekwencji bajtów. Zasadniczo nie jest możliwe, aby pracować z plikami neetstic. Możesz jednak odczytać i pisać pliki tekstowe. Zaletą tej metody dostępu do pliku jest szybkość zapisu odczytu: dla jednego odwołania można odczytać znaczący blok informacji.

Podczas otwierania pliku do dostępu do binarnego drugi parametr funkcji Fopen () jest ciąg "RB" lub "WB".

Temat pracy z plikami binarnymi jest dość skomplikowane, wymaga oddzielnej lekcji do studiowania. Oto wyraźne funkcje funkcji zapisu do zapisu do pliku, który jest uważany za strumień bajtów.

Funkcje Fread () i FWrite () są odbierane jako parametry:

  1. adres obszaru pamięci, w którym dane są zapisywane lub z miejsca, w którym są czytane,
  2. rozmiar jednego typu dowolnego typu
  3. liczba dostępnych danych określonych rozmiarów,
  4. wskaźnik pliku.

Funkcje te zwracają liczbę pomyślnie odczytywanych lub nagranych danych. Te. Możesz "zamówić" czytanie 50 elementów danych i uzyskać tylko 10. Błędy nie pojawią się.

Przykład używania funkcji Fread () i FWrite ():

#Zawierać. #Zawierać. Główny () (plik *; Plik; Char Shelf1 [50], Shelf2 [100]; Int N, M; Plik \u003d Fopen ("Shelf1.txt", "RB"); N \u003d Fread (Półka 1, Sizeof (Char), 50, plik); fclose (plik); plik \u003d fopen ("shelf2.txt", "rb"); m \u003d fread (shelf2, sizeof (char), 50, plik); fclose (plik); shelf1 [n] \u003d " \0 " ; Shelf2 [M] \u003d " n "; Shelf2 [M + 1] \u003d " \0 " ; File \u003d Fopen ("Shop.txt", "WB"); FWRITE (SHELF2, Shelf1), Sizeof (Char), N + M, plik); Fclose (plik); )

Istnieje próba czytania z pierwszego pliku 50 znaków. W N, liczba rzeczywiście zapisuje znaków. Wartość N może być równa 50 lub mniej. Dane są umieszczane w ciągu. To samo dzieje się z drugim plikiem. Następnie pierwszy ciąg jest dołączony do drugiego, a dane są resetowane do trzeciego pliku.

Rozwiązywanie zadań

  1. Napisz program, który żąda nazwy pliku tekstowego (adresu) pliku tekstowego, a następnie otwiera go i uważa, że \u200b\u200bliczba znaków i linii.
  2. Napisz program, który rejestruje dane odebrane z innego pliku do pliku i w każdym razie modyfikowany przed rekordem. Każda linia danych odebranych z pliku należy umieścić w strukturze.

Ostatnia aktualizacja: 10/31/2015

Aby pracować z katalogami w przestrzeni nazw System.io, dwie klasy są bezpośrednio: katalog i katalog.

Klasa katalogu.

Klasa katalogów zapewnia szereg metod statycznych do zarządzania katalogiem. Niektóre z tych metod:

    Utworzenie: Tworzy katalog na określonej ścieżce ścieżki

    Usuń (ścieżka): Usuwa katalog na określonej ścieżce ścieżki

    Istnieje (ścieżka): określa, czy istnieje katalog na określonej ścieżce ścieżki. Jeśli jest, zwracany jest prawdę, jeśli nie ma, a następnie false

    GetDiretories (ścieżka): Pobiera listę katalogów w katalogu ścieżki

    GetFiles (ścieżka): Pobiera listę plików w katalogu ścieżki

    Ruch (sourcecedIname, destdirname): Katalog przenosi

    GetParent (ścieżka): Dostanie katalogu nadrzędnego

Klasa DirectoryInfo.

Ta klasa zapewnia funkcjonalność tworzenia, usuwania, przeniesienia i innych operacji katalogów. Pod wieloma względami wygląda na katalog. Niektóre z jego właściwości i metod:

    Utwórz (): Tworzy katalog

    CreaseSubDirectory (ścieżka): Tworzy podkatalog dla określonej ścieżki ścieżki

    Usuń (): Katalog usuwania

    Istnieje nieruchomość: określa, czy jest katalog

    GetDiretories (): Pobiera listę katalogów

    GetFiles (): Pobiera listę plików

    Moveto (DestdirName): przenosi katalog

    Nieruchomość nadrzędna: Uzyskiwanie katalogu nadrzędnego

    Nieruchomość korzenia: Uzyskiwanie katalogu głównego

Spójrzmy na przykłady zastosowania tych klas

Uzyskiwanie listy plików i podkatalogów

Dirname String \u003d "C:"; Jeśli (katalog.Exists (Dirname)) (Console.Writeline ("Subdalogues:"); Dirs Direction.GetDiretories (Dirname); Foreach (String S in Dirs) (Console.Writeline (S);) Console.WRITELELINE ( ); Konsola.Writeline ("Pliki:"); pliki string \u003d katalog.getfiles (DIRNAME); Foreach (String S w plikach) (Console.Writeline))))

Zwróć uwagę na użycie szafek w nazwach plików. Albo używamy podwójnej połowu: "C:", albo pojedynczo, ale wtedy przed wszystkim, umieszczając znak @: @ "C: Pliki programu"

Tworzenie katalogu

Ścieżka strun \u003d @ "C: SomeDir"; Subpath String \u003d @ "Program Avalon"; DirectoryInfo Dirinfo \u003d New DirectoryInfo (ścieżka); jeśli (! Dirinfo.Create ();) Dirinfo.CreationSubdirectory (subpath);

Najpierw sprawdzasz, a nie ma takiego katalogu, ponieważ jeśli istnieje, nie będzie to niemożliwe, aby go utworzyć, a aplikacja rzuci błąd. W rezultacie będziemy mieli następujący sposób: "C: Somedir Program Avalon"

Odbieranie informacji o katalogu

String Dirname \u003d "C: Pliki programów"; DirectoryInfo Dirinfo \u003d New DirectoryInfo (Digname); Console.WriteLine ($ "Nazwa katalogu: (Dirinfo.name)"); Console.WRITELINE ($ "Nazwa pełnej katalogu: (Dirinfo.fullname)"); Console.WRITELINE ($ "Czas kreacji katalogu: (Dirinfo.CreationTime)"); Console.WriteLine ($ "katalog główny: (Dirinfo.root)");

Wyjmowanie katalogu

Jeśli po prostu zastosujemy metodę usuwania do nieustalnego folderu, w którym są jakieś pliki lub podkatalogi, aplikacja rzuci błąd. Dlatego musimy przenieść dodatkową opcję typu Boolean do metody Usuń, co wskazuje, że folder musi zostać usunięty ze wszystkimi treściami:

String Dirname \u003d @ "C: Somefolder"; Spróbuj (katalogifo Dirinfo \u003d New DirectoryInfo (Dirname); Dirinfo.Delete (True); Console.WRITELINE ("Katalog zdalny");) Catch (Exception Ex) (Console.WRITELINE (ex.Sessage);)

String Dirname \u003d @ "C: Somefolder"; Katalog.Delete (Dirname, True);

Przenoszenie katalogu

String OldPath \u003d @ "C: Somefolder"; String NewPath \u003d @ "C: SomeDir"; DirectoryInfo Dirinfo \u003d New DirectoryInfo (Oldpath); if (Dirinfo.exists && katalog.exists (Newpath) \u003d\u003d False) (Dirinfo.moveto (NewPath);)

Podczas przemieszczania należy pamiętać, że nowy katalog, w którym chcemy, aby wszystkie zawartość starego katalogu nie powinien istnieć.

Większość programów komputerowych pracuje z plikami, dlatego konieczne jest utworzenie, usuwanie, zapis, aby odczytać, otwórz pliki. Jaki jest plik? Plik jest nazwanym zestawem bajtów, które można zapisać na jakimś dysku. Cóż, teraz jest jasne, że w ramach pliku jest rozumiany jako sekwencja bajtów, która ma własną, unikalną nazwę, na przykład file.txt. W jednym katalogu mogą być pliki o tych samych nazw. W ramach nazwy pliku jest rozumiana nie tylko jego nazwę, ale także rozbudowa, na przykład: file.txt i file.dat różne pliki, chociaż mają te same nazwy. Jest coś takiego jak pełna nazwa plików jest pełny adres do katalogu plików z nazwą nazwy pliku, na przykład: D: Docs file.txt. Ważne jest, aby zrozumieć te podstawowe koncepcje, w przeciwnym razie trudno będzie pracować z plikami.

Aby pracować z plikami, musisz podłączyć plik nagłówka . W Określono kilka klas, a pliki nagłówka są podłączone. wprowadzanie pliku I. wyjście pliku.

Wejście / wyjście pliku jest podobne do standardowego wejścia / wyjścia, jedyną różnicą jest to, że wejście / wyjście nie znajduje się na ekranie, ale do pliku. Jeśli wejście / wyjście do standardowych urządzeń jest wykonywane za pomocą obiektów CIN i COUT, wystarczy stworzyć własne obiekty, które można stosować podobnie do operatorów CIN i COUT.

Na przykład, musisz utworzyć plik tekstowy i zapisać do ciągu, aby pracować z plikami w C ++. Aby to zrobić, musisz wykonać następujące kroki:

  1. utwórz obiekt klasy ofstream ;
  2. wiąż obiekt klasy z plikiem, do którego zostanie wykonany rekord;
  3. zapisz ciąg do pliku;
  4. zamknąć plik.

Dlaczego konieczne jest stworzenie obiektu klasy ofstream, a nie klasowej ifstream? Ponieważ musisz nagrać plik, a jeśli trzeba było odczytać dane z pliku, a następnie utworzono obiekt klasy ifstream.

// Utwórz obiekt do zapisu do nazwy pliku OFSTREAM / * * /; // Klasa obiektu OFSTREAM

Wezwijmy obiekt - Fout, tak się dzieje:

Ofstream Fout;

Jaki jest obiekt dla nas? Obiekt jest konieczny, aby pisać do pliku. Obiekt jest już utworzony, ale nie jest powiązany z plikiem, w którym należy zarejestrować ciąg.

Fut.open ("cppstudio.txt"); // skojarzyamy obiekt z plikiem

Dzięki operacji uzyskujemy dostęp do metody klasy Open (), w okrągłych wspornikach, których określasz nazwę pliku. Określony plik zostanie utworzony w bieżącym katalogu z programem. Jeśli plik o tej samej nazwie istnieje, istniejący plik zostanie zastąpiony nowym. Tak więc plik jest otwarty, pozostaje do zapisania do niego żądany ciąg. To jest takie:

Fout.<< "Работа с файлами в С++"; // запись строки в файл

Korzystając z transmisji transmisji do strumienia, wraz z obiektem Fout, praca z plikami w C ++ jest zapisywana do pliku. Ponieważ nie ma już potrzeby zmiany zawartości pliku, należy go zamknąć, czyli, aby oddzielić obiekt z pliku.

Fout.close (); // Zamknąć plik

Efekt - stworzył plik z pracą ciągną z plikami w C ++.

Kroki 1 i 2 można łączyć, w jednym rzędzie utwórz obiekt i łączyć go do pliku. To jest takie:

Ofstream fout ("cppstudio.txt"); // Utwórz obiekt klasy Ostream i połącz go do pliku CPPstudio.txt

Łączymy cały kod i otrzymujemy następujący program.

// plik.CPP: Określa punkt wprowadzania aplikacji konsoli. #Include "stdafx.h" #include Za pomocą przestrzeni nazw STD; Int Główny (OFS ARGC, CHAR * Argv) (ofstream Fout); // Utwórz obiekt klasy Ostream, aby pisać i łączyć go do pliku CPPStudio.txt Fout<< "Работа с файлами в С++"; // запись строки в файл fout.close(); // закрываем файл system("pause"); return 0; }

Pozostaje sprawdzić poprawność programu, a dla tego otwiera plik Cppstudio.txt. I patrzymy na jego zawartość, powinno być - Praca z plikami w C ++.

  1. utwórz obiekt klasy IFSTREAM i połącz go do pliku, z którego zostanie sprawdzone czytanie;
  2. przeczytaj plik;
  3. zamknąć plik.
// file_read.cpp: Określa punkt wejściowy dla aplikacji konsoli. #Include "stdafx.h" #include #Zawierać. Za pomocą przestrzeni nazw STD; Int Main (int Argc, Char * Argv) (SetLocale); // Corillic Cyrylica Wyświetlacze Char Buff; // Bufor Pośredniczym Przeczytaj odczytywanie z IFStream Fin Text ("CPPStudio.txt"); // otwarty plik do czytania fin \u003e\u003e<< buff << endl; // напечатали это слово fin.getline(buff, 50); // считали строку из файла fin.close(); // закрываем файл cout << buff << endl; // напечатали эту строку system("pause"); return 0; }

Program pokazuje dwa sposoby odczytu z pliku, pierwsze - przy użyciu operacji transmisji do strumienia, druga - przy użyciu funkcji Getline () . W pierwszym przypadku tylko pierwsze słowo jest odczytywane, aw drugim przypadku ciąg jest odczytany, 50 znaków. Ale ponieważ pozostało mniej znaków w pliku, znaki są czytane włącznie do ostatniego. Zauważ, że czytając drugi raz (wiersz 17.) kontynuował po pierwszym słowie, a nie od początku, ponieważ pierwsze słowo zostało przeczytanewiersz 14.. Wynik programu jest pokazany na rysunku 1.

Praca z plikami w C ++, aby kontynuować, naciśnij dowolny klawisz. . .

Rysunek 1 - Praca z plikami w C ++

Program działał poprawnie, ale nie zawsze się dzieje, nawet jeśli jest w porządku z kodem. Na przykład, program przekazał nazwę nieistniejącego pliku lub błąd jest wykonany w nazwie. Co wtedy? W tym przypadku nic się nie dzieje. Nie zostanie znaleziony plik, a zatem nie można go odczytać. Dlatego kompilator ignoruje linie, w których praca działa z plikiem. W rezultacie program zostanie prawidłowo zakończony, ale nic na ekranie nie zostanie wyświetlone. Wydaje się, że jest to całkowicie normalna reakcja na taką sytuację. Ale prosty użytkownik nie będzie jasny, co jest sprawa i dlaczego linia nie pojawia się na ekranie z pliku. Tak więc, aby wszystko jest niezwykle jasne w C ++, zapewnia taką funkcję - is_open (), co zwraca wartości całkowite: 1 - Jeśli plik został pomyślnie otwarty, 0 - jeśli plik nie jest otwarty. Sfinalizujemy program z otwieraniem pliku, tak że jeśli plik nie jest otwarty, wyświetlany był odpowiedni komunikat.

// file_read.cpp: Określa punkt wejściowy dla aplikacji konsoli. #Include "stdafx.h" #include #Zawierać. Za pomocą przestrzeni nazw STD; Int Main (int Argc, Char * Argv) (SetLocale); // Korekcja Cyrylica Corillic Wyświetlacz; // Bufor pamięci pośrednich Przeczytaj z pliku Plik ifStream FIN ("cppstudio.doc"); // (wprowadzono niewłaściwą nazwę pliku), jeśli (! Fin.is_open ()) // jeśli plik nie jest otwarty<< "Файл не может быть открыт!\n"; // сообщить об этом else { fin >\u003e buff; // Rozważane pierwsze słowo z pliku COut<< buff << endl; // напечатали это слово fin.getline(buff, 50); // считали строку из файла fin.close(); // закрываем файл cout << buff << endl; // напечатали эту строку } system("pause"); return 0; }

Wynik programu jest pokazany na rysunku 2.

Nie można otworzyć pliku! Aby kontynuować, naciśnij dowolny klawisz. . .

Rysunek 2 - Praca z plikami w C ++

Jak widać z rysunku 2, program zgłosił niezdolność do otwarcia pliku. Dlatego, jeśli program działa z plikami, zaleca się korzystanie z tej funkcji, is_open (), nawet jeśli jesteś pewien, że plik istnieje.

Tryby otwierania plików.

Tryby otwarcia plików Ustaw korzystanie z plików. Aby ustawić tryb w klasie IOS_Base, istnieją stałe, które określają tryb otwarcia plików (patrz tabela 1).

Tryby otwierania plików można zainstalować bezpośrednio podczas tworzenia obiektu lub podczas wywoływania funkcji Open () .

Ofstream Fout ("cppstudio.txt", ios_base :: App); // Otwórz plik, aby dodać informacje do końca pliku fout.open ("cppstudio.txt", ios_base :: App); // Otwórz plik, aby dodać informacje do końca pliku

Tryby otwierania plików można łączyć za pomocą biddalnie logiki. lub |. , na przykład: ios_base :: Out | IOS_BASE :: TRUNC - Otwieranie pliku do nagrywania, wcześniej oczyszczając go.

Obiekty klasy Ostream, gdy domyślnie wiążą się z plikami, zawiera tryby otwarcia plików iOS_BASE: Out | IOS_BASE :: TRUNC. . Oznacza to, że plik zostanie utworzony, jeśli nie istnieje. Jeśli plik istnieje, jego zawartość zostanie usunięta, a sam plik będzie gotowy do nagrywania. IfStream Class Obiekty są powiązane z plikiem, mają domyślny tryb otwarcia pliku iOS_base :: IN - plik jest otwarty tylko do odczytu. Tryb otwarcia pliku jest również nazywany flagą, do czytelności w przyszłości użyjemy tego konkretnego terminu. Tabela 1 zawiera listę nie wszystkie flagi, ale na początek powinno być wystarczające.

Należy pamiętać, że flagi ATE i aplikacji są bardzo podobne do opisu, oboje poruszają wskaźnik do końca pliku, ale flaga aplikacji umożliwia nagrywanie, tylko na końcu pliku, a flaga ATE po prostu zmieniają się Flaga na końcu pliku i nie ogranicza lokalizacji rekordów.

Opracujemy program, który przy użyciu operacji SizeOf (), obliczy charakterystykę głównych typów danych w C ++ i zapisz je do pliku. Charakterystyka:

  1. liczba bajtów zapewniona przez typ danych
  2. maksymalna wartość, którą można przechowywać określony typ danych.

Wpis pliku musi być wykonany w takim formacie:

/ * Typ danych Bajt MAX Value Bool \u003d 1 255,00 Char \u003d 1 255,00 krótki INT \u003d 2 32767,00 Niepodpisany krótki int \u003d 2 65535.00 int \u003d 4 2147483647.00 Nieodpowiedziany int \u003d 4 4294967295.00 Długie int \u003d 4 2148464646.00 Nieodpowiedni dług Długi float \u003d 8 9223372036854775800.00 Double \u003d 8 9223372036854775800.00 * /

Taki program został już opracowany wcześniej w sekcji, ale wszystkie informacje o typach danych były wyświetlane na standardowym urządzeniu wyjściowym, i musimy odprowadzać program, aby informacje były zapisywane w pliku. Aby to zrobić, musisz otworzyć plik w trybie nagrywania, z wstępnym transzemu bieżącego informacji o plikach ( wiersz 14.). Gdy tylko plik zostanie utworzony i pomyślnie otwarty (ciągi 16 - 20) zamiast operatora COut, w wiersz 22.użyj obiektu Fout. Tak więc zamiast ekranu informacje o typach danych są rejestrowane w pliku.

// Napis_File.CPP: Określa punkt wejścia do aplikacji konsoli. #Include "stdafx.h" #include #Zawierać. // pracuj z plikami #include // za pomocą manipulatorów wejściowych / wyjściowych przestrzeni nazw STD; Int Main (int Argc, Char * Argv) (SetLocale); // skojarzymy obiekt za pomocą pliku, otwierając plik w trybie nagrywania, po usunięciu wszystkich danych z niego fout ("dane_types.txt", ios_base :: Wyjdź | ios_base :: Trunc); jeśli (! Fout.is_open ()) // jeśli plik nie był otwarty (Cout<< "Файл не может быть открыт или создан\n"; // напечатать соответствующее сообщение return 1; // выполнить выход из программы } fout << " data type " << "byte" << " " << " max value " \u003c\u003c ENDL // nagłówki kolumn \u003c\u003c"bool = " << sizeof(bool) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных bool*/ << (pow(2,sizeof(bool) * 8.0) - 1) << endl << "char = " << sizeof(char) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных char*/ << (pow(2,sizeof(char) * 8.0) - 1) << endl << "short int = " << sizeof(short int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных short int*/ << (pow(2,sizeof(short int) * 8.0 - 1) - 1) << endl << "unsigned short int = " << sizeof(unsigned short int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных unsigned short int*/ << (pow(2,sizeof(unsigned short int) * 8.0) - 1) << endl << "int = " << sizeof(int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных int*/ << (pow(2,sizeof(int) * 8.0 - 1) - 1) << endl << "unsigned int = " << sizeof(unsigned int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных unsigned int*/ << (pow(2,sizeof(unsigned int) * 8.0) - 1) << endl << "long int = " << sizeof(long int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных long int*/ << (pow(2,sizeof(long int) * 8.0 - 1) - 1) << endl << "unsigned long int = " << sizeof(unsigned long int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных undigned long int*/ << (pow(2,sizeof(unsigned long int) * 8.0) - 1) << endl << "float = " << sizeof(float) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных float*/ << (pow(2,sizeof(float) * 8.0 - 1) - 1) << endl << "long float = " << sizeof(long float) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных long float*/ << (pow(2,sizeof(long float) * 8.0 - 1) - 1) << endl << "double = " << sizeof(double) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных double*/ << (pow(2,sizeof(double) * 8.0 - 1) - 1) << endl; fout.close(); // программа больше не использует файл, поэтому его нужно закрыть cout << "Данные успешно записаны в файл data_types.txt\n"; system("pause"); return 0; }

Nie można zauważyć, że zmiany w programie są minimalne, a wszystkie ze względu na fakt, że standardowe wejście / wyjście i dane wejściowe / wyjście / wyjście / wyjście są używane absolutnie podobne. Na końcu programu, wwiersz 45. Wyraźnie zamknęliśmy plik, chociaż niekoniecznie jest, ale jest uważany za dobry ton programowania. Warto zauważyć, że wszystkie funkcje i manipulatory używane do formatowania standardowego wejścia / wyjścia są istotne dla wejścia / wyjścia plików. Dlatego też nie wystąpiły błędy, gdy operator Cout. został zastąpiony przez obiekt Fout.

W tym artykule dowiadujemy się, jak czytać dane z plików i nagrywać informacje do plików w programach SI. Pliki w Si.służy do zapisywania wyniku programu SI i używać go z nowym uruchomieniem programu. Na przykład możesz zapisać wyniki obliczeń, statystyk gry.
Aby pracować z plikami w C, musisz podłączyć bibliotekę stdio.h
#Zawierać.
Pracować S. plik w Si. Musisz określić wskaźnik do pliku przykładowego.
Nazwa pliku * wskaźnik do pliku;
na przykład
Plik * płetwa;
Określa wskaźnik FIN do pliku
Następnie musisz otworzyć plik i wiązać go do wskaźnika plików. Aby otworzyć plik w czytniku, użyj polecenia
Nazwa wskaźnika do pliku \u003d fopen ("ścieżka do pliku", "r");
Na przykład następujący zespół
fin \u003d Fopen ("C: Użytkownicy użytkownika Desktop Data.txt", "R");
Otworzy plik Data.txt na pulpicie wzdłuż ścieżki C: Użytkownik User Desktop Aby znaleźć ścieżkę do pliku, można wybrać plik za pomocą myszy, aby kliknąć prawym przyciskiem myszy i Wybierz właściwości pliku. W sekcji Lokalizacja zostanie określona ścieżka do pliku. Należy pamiętać, że ścieżka jest określona przy użyciu dwóch łóżek.
Po pracy z plikiem SI musisz go zamknąć za pomocą polecenia.
fclose (nazwa wskaźnika do pliku)

Czytanie informacji z pliku tekstowego w SI

Aby przeczytać rosyjskie znaki z pliku, musisz skonfigurować pracę z Cyrylica za pomocą polecenia
setLocale (LC_ALL, "Rosyjski");

Jednocześnie konieczne jest połączenie #include na początku programu

Operator FSCANF ()

Czytać słowo z plik w Si. Polecenie FSCANF () jest używane. To polecenie jest podobne do polecenia wpisu informacji z przełącznika klucza tylko pierwszy parametr jest wskaźnikiem do pliku.
fSCANF (wskaźnik do pliku "% Formaty wprowadzania danych1% Formaty danych2 ..." i PerMENIC1, i zmienna2 ...);
Na przykład zespół
fSCANF (płetwa "% d% d% d", i A, i B, i C);
Uważa z pliku, który jest związany z wskaźnikiem do pliku FIN z trzech zmiennych o liczbie całkowitej
Przeanalizujemy przykład programu, który odczytuje z pliku tekstowego Data.txt, do którego zarejestrowane są trzy cyfry kolumny i pisze je w tablicach. Dla każdej kolumny informacyjnej jego tablica. Szczegółowo o.
#Zawierać.
#Zawierać.
Główny ()
(int a;
Int b;
int c;
int I;
// Określ wskaźnik do pliku
Plik * płetwa;
// Otwórz plik, aby przeczytać
Fin \u003d Fopen ("C: Użytkownicy użytkownika Desktop Data.txt", "R");
// stopień odczyt z pliku
dla (i \u003d 0; ja<3;i++)
{
// Czytanie ciągu trzech wartości plików i rekord tablicy
FSCANF (FIN "% D% D% D", & A [I], & B [I], & C [I]);
}
// Zawarcie tablic na ekranie
dla (i \u003d 0; ja<3;i++)
{
Printf ("% d% d% d", [i], b [i], C [I]);
}
getch ();
// Zamknięcie pliku
Fclose (płetwa);
}

Pozycja Informacje o czytaniu z pliku w FGETS C. ()

Oświadczenie FSCANF () odczytuje słowo z pliku, tj. przed pierwszą nadchodzącą przestrzenią.
Aby przeczytać całą linię z pliku z pliku w systemie.
jeśli (NULL! \u003d FGETS (zmienna łańcuchowa, długość ciągu, wskaźnik do pliku))
{
Działania podczas czytania linii
}

Na przykład program na SI, który odczytuje dwie linie z pliku i wyświetla je na ekranie
#Zawierać.
#Zawierać.
#Zawierać.
Główny ()
{
// Ustaw ciąg stałego
Char st1;
char st2;
// Określ wskaźnik do pliku
Plik * płetwa;
// Praca z cyrylicy
SetLocale (LC_ALL, "Rosyjski");
// Otwórz plik, aby przeczytać
Fin \u003d fopen ("c: data.txt", "r");
// Przeczytaj pierwszy ciąg z pliku
Jeśli (NULL! \u003d FGETS (ST1, 100, FIN))
{
// Wyświetl ciąg na ekranie
Printf ("% S", ST1);)
// Przeczytaj drugi ciąg z pliku
Jeśli (NULL! \u003d FGETS (ST2, 100, FIN))
{
// Wyświetl ciąg na ekranie
Printf ("% S", ST2);)
// Zamknij plik do czytania
Fclose (płetwa);
}

Nagraj informacje w pliku tekstowym w SI

Do nagrywania danych. do złożenia w SI, musisz otworzyć plik w trybie nagrywania
Nazwa wskaźnika do pliku \u003d fopen ("ścieżka do pliku", "W");
Aby napisać do ciągów tekstowych, użyj polecenia FPRNitf (), który jest podobny do polecenia w drugim parametrze. Ten wskaźnik do pliku
fprintf (nazwa wskaźnika do pliku "% formatu wejściowego", zmienne);
Na przykład, napisz do zmiennej wartości pliku Out.txt
a \u003d 10;
Fout \u003d fopen ("C: Użytkownicy użytkownika Desktop Out.txt", "W");
Fprintf (fout "% d", a);

Przykład programu na SI, który żąda dwóch liczb i pisze do pliku Out.txt zarówno liczby, jak i ich suma

#Zawierać.
#Zawierać.

główny ()
(int a;
Int b;
int c;
Plik * fout;
Fout \u003d fopen ("C: Użytkownicy użytkownika Desktop Out.txt", "W");
Printf ("Wprowadź pierwszy numer");
Skanf ("% D", & A);
Printf ("Wprowadź drugą liczbę");
Skanf ("% D", & B);
c \u003d a + b;
Fprintf (fout "% d% d% d", a, b, c);
getch ();
Fclose (fout);
}

Dzwon.

Są ci, którzy przeczytali tę wiadomość przed tobą.
Subskrybuj odbieranie artykułów świeżych.
E-mail
Nazwa
Nazwisko
Jak chcesz przeczytać dzwonek
Bez spamu