首页 > 其他分享 >C语言学习:复制文件

C语言学习:复制文件

时间:2023-02-12 16:15:24浏览次数:46  
标签:文件 src dest C语言 复制 result file ERROR COPY

 

 1 #include <stdio.h>
 2 #include <io_utils.h>
 3 #include <errno.h>
 4 #include <string.h>
 5 
 6 #define COPY_SUCCESS 0
 7 #define COPY_ILLEGAL_ARGUMENTS -1
 8 #define COPY_SRC_OPEN_ERROR -2
 9 #define COPY_SRC_READ_ERROR -3
10 #define COPY_DEST_OPEN_ERROR -4
11 #define COPY_DEST_WRITE_ERROR -5
12 #define COPY_UNKNOWN_ERROR -100
13 
14 int CopyFile(char const *src, char const *dest) {
15   if (!src || !dest) {
16     return COPY_ILLEGAL_ARGUMENTS;
17   }
18 
19   FILE *src_file = fopen(src, "rb");
20   if (!src_file) {
21     return COPY_SRC_OPEN_ERROR;
22   }
23 
24   FILE *dest_file = fopen(dest, "wb");
25   if (!dest_file) {
26     fclose(src_file);
27     return COPY_DEST_OPEN_ERROR;
28   }
29 
30   int result;
31 
32   while (1) {
33     int next = fgetc(src_file);
34     if (next == EOF) {
35       if (ferror(src_file)) {
36         result = COPY_SRC_READ_ERROR;
37       } else if(feof(src_file)) {
38         result = COPY_SUCCESS;
39       } else {
40         result = COPY_UNKNOWN_ERROR;
41       }
42       break;
43     }
44 
45     if (fputc(next, dest_file) == EOF) {
46       result = COPY_DEST_WRITE_ERROR;
47       break;
48     }
49   }
50 
51   fclose(src_file);
52   fclose(dest_file);
53 
54   return result;
55 }
56 
57 int main() {
58   int result = CopyFile("data/io_utils.h", "data_copy/io_utils.h");
59   PRINT_INT(result);
60   result = CopyFile("data/logo.bmp", "data_copy/logo.bmp");
61   PRINT_INT(result);
62   return 0;
63 }
View Code

 

 

 

标签:文件,src,dest,C语言,复制,result,file,ERROR,COPY
From: https://www.cnblogs.com/liumy/p/17113947.html

相关文章

  • C语言填空:小球下落距离
    #include<stdio.h>//一个小球从100米高度自由下落,每次落地后反跳回原来高度的一半,再下落,//求它在第十次下落地时,共经过多少米,第十次反弹多高?main(){float【1......
  • 6.1文件以字节为单位保存
       文件是将数据存储在磁盘等存储媒介中的一种形式。程序文件中存储数据的单位是字节。   文件就是字节数据的集合。用1字节(=8位)表示字节数据有256种,用二进制......
  • C语言学习笔记(四): 循环结构程序设计
    while语句定义While语句是C语言中的循环语句,它按条件循环执行语句,直到条件不满足为止语法格式如下:while(condition){//循环体内容;}使用实例求1+2+3+…+100......
  • C语言学习笔记(三): 选择结构程序设计
    if语句if(){}if(a=1){printf("hehe");}//单独一个ifif(){}else{}inta=1,b=2; if(a==b){ printf("haha");//ifelse } else { printf("hehe......
  • Linux基础命令-ls显示目录和文件的属性信息
    前言        ls命令是常需要用到的linux命令之一,熟悉其参数的搭配有利于操作上的便利,ls命令可以显示目录和文件的属性,一起来看下展开的属性有哪些。一、ls命令介绍......
  • C语言学习: 文件流的缓冲
    没有缓冲有了缓冲  创建file变量时,传入的参数: 可以用fflush,清空缓冲区,让缓冲区内存的数据立刻打印出来。1#include<stdio.h>2#include<io_utils.h>......
  • C语言填空:strcpy功能实现
    #include<stdio.h>//将字符数组a的全部字符复制到字符数组b中(要求不用strcpy函数)//并输出新字符串【1】main(){chara[100],b[100];intc,d,f;【2......
  • C语言填空:回文字符串
    #include<stdio.h>//输入一个字符串(20个字符以内),判断其是否是回文字符串(回文字符串是指正反一样的字符串)。【1】main(){chara[21];intb,【2】,len;......
  • 文件结束的判断
    一、EOFEOF被定义为-1,在文本文件中做结束标志因此通常读写文本文件时,通过读取的字符是否为EOF判断是否结束(二进制文件中可能出现-1,不能用这个条件判断)二、feof()函数intfeo......
  • 误删的Downloads文件夹如何找回?Downloads文件夹恢复方法~
    如果不小心误删除了Downloads文件夹,如何让其快速恢复呢?今天分享Downloads文件夹恢复方法,需要的小伙伴走起~方法1.将Downloads文件夹从Home目录恢复到Dock如果下载文......