English 中文(简体)
C - 文件I/O
  • 时间:2024-12-22

C - File I/O


Previous Page Next Page  

最后一章解释了由C方案拟订语言处理的标准投入和产出装置。 本章涵盖C方案者如何为其数据储存制作、公开、封闭式或双向文件。

档案是按顺序排列的,无论它是文字档案还是双手档案。 方案拟订语言提供高水平功能和低水平的电话处理储存装置的档案。 本章将通过重要的档案管理呼吁来对待你。

Opening Files

您可使用f open( )功能创建新的档案或打开现有档案。 这项呼吁将启动“FILE>/b”类的目标,其中包括控制上游所需的一切信息。 这一职能呼吁的原型如下:

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

这里,.filename 是你用上字的字面,你将用这个字面标明你的档案,并查阅mode。 具有以下价值观之一:

Sr.No. Mode & Description
1

为阅读目的开放现有文本文档。

2

开放书面文件。 如果不存在,则会建立新的档案。 在此,贵方案将从档案开始撰写内容。

3

开放备份文件以备份方式撰写。 如果不存在,则会建立新的档案。 在此,您的方案将开始对现有档案内容进行检索。

4

开放读写文本。

5

<w+

开放读写文本。 It first truncates the file to zero length if it exists, otherwise creates a file if it does not exist.

6

开放读写文本。 It creates the file if it does not exist. The reading will start from the beginning but writing can only be appended.

如果你将处理双亲档案,那么你将使用这些途径而不是上述途径——

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

Closing a File

关闭档案,使用独cl器。 这一职能的原型是:

int fclose( FILE *fp );

fclose(-) 功能恢复零,或EOF 如果在结案时有错误。 这项职能实际上能够把在档案的缓冲中尚未处理的任何数据流出,关闭档案,并释放用于档案的任何记忆。 《平等就业机会法》在标题文件stdio.h中有固定的定义。

C标准图书馆提供的各种功能是阅读和书写档案、性质或固定长度文件。

Writing a File

下面是将个人特性写到上游的最简单功能:

int fputc( int c, FILE *fp );

职能fputc()将论点c的特性值与参考数字编号的输出。 它交还了以其他方式写的关于成功的书面特性EOF。 如果存在错误。 您可以利用以下职能撰写一条无名的插图:

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

职能fputs()在编号s上写到编号为p的输出流。 如果出现任何错误,则将回报非负值。 您可使用int fprintf(FILE *fp,const char *format, ......)功能,也可将笔迹写成档案。 举出以下例子。

保证有/tmp. 名录。 否则,在开始之前,你就必须在你的机器上制作这一目录。

#include <stdio.h>

main() {
   FILE *fp;

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

当上述法典得到汇编和执行时,该法典在/版面上创建了一个新的文件test.tx,并用两种不同功能书写了两条线。 让我们在下一节中阅读这一文件。

Reading a File

下面是从档案中阅读单一特性的最简单功能:

int fgetc( FILE * fp );

fgetc(>>功能为参考投入文件中的特性。 收益价值为所读的特性,或在出现任何错误时,其回报为EOF。 以下职能允许从一个流体中读一个插图:

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

fgets(>>, 读到p.参考的投入中,最高为-1级。 页: 1 终止扼杀的性质。

If this function encounters a newpne character or the end of the file EOF before they have read the maximum number of characters, then it returns only the characters read up to that point including the new pne character. You can also use int fscanf(FILE *fp, const char *format, ...) function to read strings from a file, but it stops reading after encountering the first space character.

#include <stdio.h>

main() {

   FILE *fp;
   char buff[255];

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

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

}

当上述法典得到汇编和执行时,它读到上一节中创建的档案并得出以下结果:

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

3: This is testing for fputs...

让我们更详细地了解这里的情况。 第一,fscanf() ∗∗∗∗ 之后,它遇到了一个空间,第二个电话是fgets(>,该电话是其余线路,直至其到达线尾。 最后,最后一个电话fgets()读到第二行。

Binary I/O Functions

有两个职能,可用于二元投入和产出——

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

这两项职能都应用于阅读或书写记忆的区块——通常是阵列或结构。

Advertisements