用c语言写一个同时满足以下要求的1、封装一个计算文件大小的函数 2、把文件1.txt的数据,写入2.txt
时间: 2024-09-13 17:13:50 浏览: 45
如何用c语言给一个文件加密.rar_加密_文件加密_文件加密 c++
首先,我们会创建一个函数来计算文件的大小,然后我们将创建一个程序,该程序将打开一个名为 "1.txt" 的文件,读取其内容,并将这些内容写入到另一个名为 "2.txt" 的文件中。下面是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 函数声明
long getFileSize(const char *filePath);
int main() {
const char *sourceFile = "1.txt";
const char *destFile = "2.txt";
FILE *source, *dest;
long fileSize;
char buffer[1024]; // 假设缓冲区大小为1024字节
// 计算源文件的大小
fileSize = getFileSize(sourceFile);
if (fileSize == -1) {
perror("Error getting file size");
return EXIT_FAILURE;
}
// 打开源文件和目标文件
source = fopen(sourceFile, "rb");
if (source == NULL) {
perror("Error opening source file");
return EXIT_FAILURE;
}
dest = fopen(destFile, "wb");
if (dest == NULL) {
perror("Error opening destination file");
fclose(source);
return EXIT_FAILURE;
}
// 读取源文件内容并写入目标文件,直到文件结束
size_t bytesRead;
while ((bytesRead = fread(buffer, 1, sizeof(buffer), source)) > 0) {
fwrite(buffer, 1, bytesRead, dest);
}
// 关闭文件
fclose(source);
fclose(dest);
printf("文件从 %s 成功复制到 %s\n", sourceFile, destFile);
return EXIT_SUCCESS;
}
// 计算并返回文件大小
long getFileSize(const char *filePath) {
FILE *file = fopen(filePath, "rb");
if (file == NULL) {
perror("Error opening file");
return -1; // 如果文件无法打开,则返回-1
}
fseek(file, 0, SEEK_END); // 移动到文件末尾
long size = ftell(file); // 获取当前文件指针位置,即文件大小
fclose(file);
return size;
}
```
这个程序首先定义了 `getFileSize` 函数,用于获取文件的大小。在 `main` 函数中,我们打开了名为 "1.txt" 的源文件和名为 "2.txt" 的目标文件。然后我们使用 `fread` 从源文件中读取数据,并使用 `fwrite` 将读取的数据写入目标文件。通过循环读取,直到文件末尾,我们完成文件内容的复制。
阅读全文