目录
题目
用标准IO实现cp功能
思想
首先,检查命令行参数的数量。如果不是 3 个,即没有正确提供源文件和目标文件的名称,通过
printf
输出错误提示信息并返回-1
结束程序。使用
fopen
函数以只读模式("r")打开源文件。如果打开失败(返回NULL
),通过perror
输出错误信息并返回-1
结束程序。同样使用
fopen
函数以写入模式("w")打开目标文件。如果打开失败,通过perror
输出错误信息并返回-1
结束程序。使用一个
while
循环,通过fgets
函数从源文件中读取内容到buf
中。只要fgets
能成功读取到内容(不为NULL
),就使用fputs
函数将读取到的内容写入到目标文件中。另外注释掉的部分使用
fgetc
和fputc
逐个字符地进行读写,也是一种可行的方式。读写操作完成后,使用
fclose
函数分别关闭源文件和目标文件,释放相关资源。总的来说,这段代码的目的是将源文件的内容完整地复制到目标文件中。
代码
#include <stdio.h>
int main(int argc, char const *argv[])
{
FILE *fp1, *fp2;
char buf[32];
if (argc != 3)
{
printf("err: %s <srcfile> <destfile>\n", argv[0]);
return -1;
}
fp1 = fopen(argv[1], "r");
if (NULL == fp1)
{
perror("fopen fp1 err");
return -1;
}
fp2 = fopen(argv[2], "w");
if (NULL == fp2)
{
perror("fopen fp2 err");
return -1;
}
while (fgets(buf, 32, fp1) != NULL)
{
fputs(buf, fp2);
}
// char ch;
// while ((ch = fgetc(fp1)) != EOF)
// {
// fputc(ch, fp2);
// }
fclose(fp1);
fclose(fp2);
return 0;
}