2024-12-29 6年前的作业

1

char a[10],b[]={"COPY"}; 2//定义字符数组a,b 3strcpy(a,b); 4//将b中的COPY复制到a中

2

文件操作是指在程序中读取、写入或修改文件的过程。文件操作在编程中非常重要,因为它允许程序与外部数据进行交互,保存和检索信息。C语言提供了一套标准的文件操作函数,下面是对文件操作的详细介绍:

1. 打开文件 fopen()

在进行文件操作之前,必须首先打开文件。fopen()函数用于打开文件,并返回一个文件指针,该指针后续将用于操作该文件。

c

Copy code

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

  • filename:要打开的文件名(路径可以是相对路径或绝对路径)。
  • mode:文件打开模式,决定了文件如何打开。常见的模式有:
    • "r":以只读方式打开文件,文件必须存在。
    • "w":以写入方式打开文件,若文件存在则覆盖,不存在则创建。
    • "a":以追加方式打开文件,若文件不存在则创建。
    • "r+":以读写方式打开文件,文件必须存在。
    • "w+":以读写方式打开文件,若文件存在则覆盖,不存在则创建。
    • "a+":以读写方式打开文件,若文件不存在则创建,写入时内容追加。

示例:

c

Copy code

FILE *fp = fopen("data.txt", "r"); // 打开文件进行读取 if (fp == NULL) { printf("无法打开文件\n"); }

2. 关闭文件 fclose()

文件操作完成后,应当使用fclose()关闭文件,以释放资源并确保数据完整写入磁盘。

c

Copy code

int fclose(FILE *fp);

  • 返回值:0表示成功,EOF表示失败。

示例:

c

Copy code

fclose(fp); // 关闭文件

3. 读取文件内容 fread()

fread()用于从文件中读取数据,通常用于读取二进制文件。它一次可以读取多个数据项。

c

Copy code

size_t fread(void *ptr, size_t size, size_t count, FILE *stream);

  • ptr:指向存储读取数据的内存地址。
  • size:每个数据项的字节数。
  • count:要读取的数据项数。
  • stream:文件指针。

示例:

c

Copy code

FILE *fp = fopen("data.bin", "rb"); int buffer[10]; size_t bytesRead = fread(buffer, sizeof(int), 10, fp); printf("读取了 %zu 个整数\n", bytesRead); fclose(fp);

4. 写入文件内容 fwrite()

fwrite()用于将数据写入文件,通常用于写入二进制文件。它一次可以写入多个数据项。

c

Copy code

size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);

  • ptr:指向要写入的数据的内存地址。
  • size:每个数据项的字节数。
  • count:要写入的数据项数。
  • stream:文件指针。

示例:

c

Copy code

FILE *fp = fopen("data.bin", "wb"); int numbers[] = {1, 2, 3, 4, 5}; fwrite(numbers, sizeof(int), 5, fp); fclose(fp);

5. 文件指针位置操作 fseek(), ftell()

在文件中读取或写入时,文件指针会根据操作自动移动。可以使用fseek()ftell()手动控制文件指针的位置。

  • fseek():设置文件指针的位置。

    c

    Copy code

    int fseek(FILE *stream, long offset, int whence);

    • offset:偏移量。
    • whence:位置的起始点,常用的值有:
      • SEEK_SET:从文件开头开始计算。
      • SEEK_CUR:从当前位置开始计算。
      • SEEK_END:从文件末尾开始计算。
  • ftell():获取文件指针当前位置。

    c

    Copy code

    long ftell(FILE *stream);

示例:

c

Copy code

FILE *fp = fopen("data.txt", "r"); fseek(fp, 10, SEEK_SET); // 将文件指针移动到文件开头后第10个字节 long pos = ftell(fp); // 获取当前文件指针位置 printf("当前文件指针位置:%ld\n", pos); fclose(fp);

6. 判断文件结尾 feof()

feof()用于检查文件指针是否已到达文件末尾,常用于循环读取文件中的内容。

c

Copy code

int feof(FILE *stream);

  • 如果到达文件末尾,返回非零值;否则返回0。

示例:

c

Copy code

FILE *fp = fopen("data.txt", "r"); char ch; while ((ch = fgetc(fp)) != EOF) { // 使用fgetc读取字符 putchar(ch); } fclose(fp);

7. 错误处理 ferror()

ferror()用于检查文件流是否发生错误。

c

Copy code

int ferror(FILE *stream);

  • 如果发生错误,返回非零值;否则返回0。

示例:

c

Copy code

FILE *fp = fopen("data.txt", "r"); if (ferror(fp)) { printf("文件读取错误\n"); } fclose(fp);

常见文件操作流程

  1. 打开文件: 使用fopen()打开文件。
  2. 读写文件: 使用fread()fwrite()进行读写操作。
  3. 移动文件指针: 使用fseek()调整文件指针位置,使用ftell()获取当前位置。
  4. 检查文件末尾: 使用feof()判断是否到达文件末尾。
  5. 关闭文件: 使用fclose()关闭文件,确保文件保存并释放资源。

小结

文件操作是一个非常基础且重要的编程技能,特别是在处理大量数据或需要持久化数据时。C语言提供的文件操作函数非常灵活,可以处理文本文件和二进制文件的读取和写入。理解并熟练使用这些函数可以大大提升程序的功能性。

posted @ 2025-01-01 16:32  诸葛蛋蛋  阅读(17)  评论(0)    收藏  举报