21xrx.com
2025-03-24 01:01:44 Monday
文章检索 我的文章 写文章
使用枚举和结构体实现文件读写功能的C语言程序
2023-06-09 14:16:07 深夜i     --     --
枚举

三个 结构体, 文件读写

实现原理:

1. 定义一个枚举类型,用来表示读写文件的状态,例如SUCCESS, FAILURE, FILE_NOT_FOUND等。

2. 定义一个结构体类型,用来存储文件名、打开方式、文件指针等相关信息。

3. 编写打开文件的函数,并返回枚举类型的状态,表示文件的打开情况。

4. 编写读取文件内容的函数,并返回枚举类型的状态,表示读取操作的结果。

5. 编写写入文件内容的函数,并返回枚举类型的状态,表示写入操作的结果。

6. 使用文件指针和文件操作函数来实现文件读写功能。

示例代码:

#include 
enum file_status FILE_NOT_FOUND;
struct file_info {
  char name[100];
  char mode[10];
  FILE *fp;
};
enum file_status open_file(struct file_info *files, int index) {
  files[index].fp = fopen(files[index].name, files[index].mode);
  if (files[index].fp == NULL)
    return FILE_NOT_FOUND;
   else
    return SUCCESS;
  
}
enum file_status read_file(struct file_info *files, int index, char *buffer, int size) {
  if (files[index].fp == NULL)
    return FAILURE;
  
  fgets(buffer, size, files[index].fp);
  if (feof(files[index].fp))
    return SUCCESS;
   else
    return FAILURE;
  
}
enum file_status write_file(struct file_info *files, int index, char *buffer) {
  if (files[index].fp == NULL)
    return FAILURE;
  
  fprintf(files[index].fp, "%s", buffer);
  return SUCCESS;
}
int main() {
  struct file_info files[2] = {
     NULL,
    "file2.txt"
  };
  char buffer[100];
  if (open_file(&files[0], 0) == SUCCESS) {
    printf("Successfully opened file1.txt.\n");
  } else {
    printf("Failed to open file1.txt.\n");
  }
  if (open_file(&files[1], 1) == SUCCESS) {
    printf("Successfully opened file2.txt.\n");
  } else {
    printf("Failed to open file2.txt.\n");
  }
  write_file(&files[1], 0, "Hello world!\n");
  if (read_file(&files[0], 0, buffer, 100) == SUCCESS) {
    printf("Read from file1.txt: %s\n", buffer);
  } else {
    printf("Failed to read from file1.txt.\n");
  }
  fclose(files[0].fp);
  fclose(files[1].fp);
  return 0;
}

  
  

评论区

    相似文章