Latest web development tutorials

C alfabetyzacji dokument

Poprzedni rozdział wyjaśniliśmy standardowych urządzeń wejściowych i wyjściowych przetwarzanie języka C. W tym rozdziale przedstawiamy programista C tworzenia, otwierania, zamykania tekst lub pliki binarne.

Plik, czy to tekstu lub dane binarne są reprezentatywne dla serii bajtów. Funkcja języka C zapewnia nie tylko dostęp do najwyższego poziomu, ale także zapewnia podstawowe (OS) o nazwie przetwarzać pliki przechowywane na urządzeniu. Ten rozdział wyjaśni znaczenie rozmowy menedżer plików.

Otwórz plik

Można użyć funkcjifopen (), aby utworzyć nowy dokument lub otwórz istniejący plik, wywołanie będzie zainicjować obiekt typu pliku,typpliku,który zawiera wszystkie informacje niezbędne do kontrolowania przepływu. Oto prototyp tego połączenia:

FILE *fopen( const char * filename, const char * mode );

Tu, nazwa pliku jest ciąg używany do nazwy wartość Trybdostępu do pliku może być jedną z następujących wartości:

模式描述
r打开一个已有的文本文件,允许读取文件。
w打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。
a打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。
r+打开一个文本文件,允许读写文件。
w+打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。
a+打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。

Jeśli proces jest plik binarny, trzeba kliknąć na poniższy tryb dostępu tryb dostępu do zastąpienia powyżej:

"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

Zamknij plik

;

Aby zamknąć plik, użyj funkcji fclose (). Prototyp funkcji jest następująca:

 int fclose( FILE *fp );

Jeśli się powiedzie, zamknijplik, funkcja fclose () zwraca zero, wystąpi błąd podczas zamykania pliku, funkcja zwraca EOF.Funkcja ta jest w rzeczywistości spowoduje skasowanie danych w buforze, należy zamknąć plik i zwalnia całą pamięć dla pliku. EOF jest stałą zdefiniowana w pliku nagłówkowymstdio.h w.

Biblioteka standardowa języka C oferuje szereg funkcji nacisnąć znak lub w postaci stałej długości łańcucha do odczytu i zapisu plików.

Zapis do pliku

Oto bohaterowie napisać do strumienia najprostszych funkcji:

int fputc( int c, FILE *fp );

fputc funkcji ()zapisuje się znak C do wartości punktów parametr fp do strumienia wyjściowego. Jeżeli zapis się powiedzie, zwraca charakter pisemny, jeśli wystąpi błąd, to zwracaEOF.Można korzystać z następujących funkcji na ciąg nul być napisane do strumienia:

int fputs( const char *s, FILE *fp );

fputs function ()zapisuje łańcuchsdo FP punktów do strumienia wyjściowego. Jeżeli zapis się powiedzie, to zwróci wartość nieujemną w przypadku wystąpienia błędu, zwracaEOF.Można również użyćint fprintf (FILE * fp, const char * format ...) funkcję napisać ciąg do zapisu do pliku.Wypróbuj poniższe przykłady:

Uwaga: Upewnij się, że masz dostępne wkatalogu/ tmp,jeśli ten katalog nie istnieje, trzeba utworzyć katalog na komputerze.

#include <stdio.h>

main()
{
   FILE *fp;

   fp = fopen("/tmp/test.txt", "w+");
   fprintf(fp, "This is testing for fprintf...\n");
   fputs("This is testing for fputs...\n", fp);
   fclose(fp);
}

Jeżeli powyższy kod jest kompilowany i wykonywany, to zostanie utworzony w katalogu / tmp, nowy plikTest.txt i użyć dwie różne funkcje napisał dwie linie.Przeczytajmy plik.

Przeczytaj plik

Oto najprostsza funkcja czytać pojedynczy znak z pliku:

int fgetc( FILE * fp );

fgetc () odczytuje znak z pliku wejściowego wskazywanego przez fp.Zwracana jest wartość odczytu charakter, jeśli wystąpi błąd powracaEOF.Poniższa funkcja pozwala czytać ciąg ze strumienia:

char *fgets( char *buf, int n, FILE *fp );

fgets function ()odczytuje n ze strumienia wejściowego wskazywanego przez fp - o jeden znak. Będzie przeczytać ciąg skopiowany do buforabuf, a nakońcu dodaje się znaknulldo przerwania łańcucha.

Jeśli funkcja przed przeczytaniem ostatni znak napotkał znak nowej linii '\ n' na koniec pliku lub EOF, by powrócić do odczytywania znaków, w tym nowej linii. Można również użyćint fscanf (FILE * fp, const char * format ...) funkcji, aby przeczytać ciąg z pliku, ale w obliczu pierwszego znaku przestrzeni, będzie przestać czytać.

#include <stdio.h>

main()
{
   FILE *fp;
   char buff[255];

   fp = fopen("/tmp/test.txt", "r");
   fscanf(fp, "%s", buff);
   printf("1 : %s\n", buff );

   fgets(buff, 255, (FILE*)fp);
   printf("2: %s\n", buff );
   
   fgets(buff, 255, (FILE*)fp);
   printf("3: %s\n", buff );
   fclose(fp);

}

Jeżeli powyższy kod jest kompilowany i wykonywany, odczyta pliki utworzone na części, produkuje następujące rezultaty:

1 : This
2: is testing for fprintf...

3: This is testing for fputs...

Po pierwsze, metoda fscanf () tylko do odczytu to,ponieważ napotyka miejsca z tyłu. Następnie zadzwonić dofgets (), aby przeczytać resztę, aż do końca linii.Wreszciefgets () odczytane w całości drugiej linii nazwać.

Funkcje binarne I / O

Następujące dwie funkcje dla wejść i wyjść binarnych:

size_t fread(void *ptr, size_t size_of_elements, 
             size_t number_of_elements, FILE *a_file);
              
size_t fwrite(const void *ptr, size_t size_of_elements, 
             size_t number_of_elements, FILE *a_file);

Te dwie funkcje są używane do zapisu i odczytu bloku pamięci - zwykle tablicy lub struktury.