21xrx.com
2024-09-19 08:51:49 Thursday
登录
文章检索 我的文章 写文章
使用枚举和结构体实现文件读写功能的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;

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章