Latest web development tutorials

C 문서 활용 능력

이전 장에서 우리는 표준 입력 및 출력 장치 C 언어 처리를 설명했다. 이 장에서 우리는, 열기, 닫기, 텍스트 또는 바이너리 파일을 생성하는 방법을 C 프로그래머를 소개합니다.

파일은, 그 텍스트 또는 바이너리 데이터인지, 일련의 바이트 대표. C 언어 기능뿐만 아니라 장치에 저장된 파일을 처리하기 위해 호출되는 상위 레벨의 액세스를 제공 할뿐만 아니라 기본 (OS)를 제공한다. 이 장에서는 호출 파일 관리자의 중요성을 설명합니다.

파일을 엽니 다

사용자는파일 타입의 흐름을 제어하는 데 필요한 모든 정보를 포함하고,통화가 입력파일의객체를 초기화하는 것, 기존 파일을 새 문서를 생성하거나여FOPEN ()함수를 사용할 수있다. 다음은이 호출의 프로토 타입은 다음과 같습니다

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

여기서, 파일 이름은 다음 값 중 하나가 될 수있는 파일 액세스 모드 모드값의 이름을 사용하는 문자열입니다 :

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

프로세스는 바이너리 파일 인 경우, 상기를 대체하는 다음 액세스 모드 액세스 모드를 사용할 필요

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

파일을 닫습니다

;

파일을 닫으려면 FCLOSE () 함수를 사용합니다. 다음과 같이 함수 프로토 타입은 다음과 같습니다

 int fclose( FILE *fp );

성공적인 경우,파일을 닫고 FCLOSE () 함수는 에러가 파일을 닫을 때, 함수 반환 EOF발생 제로를리턴한다.이 함수는 실제로 파일에 대한 모든 메모리 버퍼의 데이터를 지우 파일을 닫고, 방출 것이다. EOF는에있는 헤더 파일STDIO.H에 정의 된 상수이다.

C 표준 라이브러리 파일을 읽고 쓸 수있는 문자 또는 고정 길이 문자열의 형태를 눌러 다양한 기능을 제공합니다.

파일에 쓰기

다음은 가장 간단한 함수의 스트림에 기입 자입니다 :

int fputc( int c, FILE *fp );

함수fputc ()는 출력 스트림 파라미터 FP 점의 값 c를 문자를 쓴다.기록이 성공적인 경우 오류가 발생하면, 그것이EOF 반환 서면 문자를 반환한다.당신은 스트림에 기입하는 null로 끝나는 문자열에 다음과 같은 기능을 사용할 수 있습니다 :

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

함수fputs ()는 출력 스트림에 포인트를 FP 할 수있는 캐릭터들씁니다. 기록이 성공적인 경우 오류가 발생하면, 그것이EOF 반환 음이 아닌 값을 반환한다.또한INT의 fprintf와 (FILE의 *의 FP, const를 사용할 수있는 문자 * 형식, ...) 파일에 기록 될 문자열을 작성하는 기능.다음 예를보십시오 :

참고 :이 디렉토리가 존재하지 않는 경우에, 당신은 당신의 컴퓨터에 디렉토리를 작성해야합니다, / tmp디렉토리를 사용할 수 있는지 확인합니다.

#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);
}

위의 코드를 컴파일하고 실행되면은 / tmp 디렉토리, 새 파일TEST.TXT에서 만든, 2 개의 다른 기능은 두 줄을 서면 사용됩니다.우리가 파일을 읽을 수 있습니다.

파일 읽기

다음은 파일에서 하나의 문자를 읽을 수있는 간단한 기능은 다음과 같습니다

int fgetc( FILE * fp );

는 fgetc () 함수는 입력 파일로부터 문자 FP 가리키는 읽는다.에러가 반환EOF가 발생할 경우, 반환 값은 문자를 판독한다.다음 함수는 스트림에서 문자열을 읽을 수 있습니다 :

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

하나의 문자를 -함수는 fgets () 입력 스트림에서 n은 FP가 가리키는 읽습니다.이 버퍼버피로 복사 한 문자열을 읽고,마지막으로 문자열을 종료문자를 추가합니다.

마지막 문자를 읽기 전에 함수, 파일 또는 EOF의 끝에 개행 문자 '\ n'을 발생하는 경우에만 줄 바꿈을 포함하여 문자를 읽을 돌아갑니다. 또한INT fscanf (FILE의 *의 FP, const를 사용할 수있는 문자 * 형식, ...) 파일에서 문자열을 읽는 기능을하지만, 최초의 우주 캐릭터의 얼굴, 그것은 읽는 중지됩니다.

#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);

}

상기 코드는 컴파일되고 실행되면 일부에 생성 한 파일을 다음과 같은 결과를 판독한다 :

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

3: This is testing for fputs...

그것은 뒤쪽에 공간이 발생하기 때문에먼저, fscanf () 메소드는,이 읽기.다음으로, 라인이 끝날 때까지,() 나머지를 읽을 수는 fgets를 호출합니다.마지막으로, 전체 두 번째 줄에읽기는 fgets ()를 호출합니다.

이진 I / O 기능

바이너리 입력과 출력에 대한 다음 두 가지 기능 :

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);

일반적으로 배열 또는 구조 -이 두 가지 기능을 읽고 메모리 블록을 기록하는데 사용된다.