C语言题目,求大神解答

编写一个包含带参数的main函数的程序,实现为指定的文本文件创建一个副本文件的命令。
【测试数据】
命令为:16_4 D:\a.txt C:\b.txt
【运行结果】
在C盘根文件夹下创建文件“b.txt”,并将D盘下的文件“a.txt”内容复制到“b.txt”中

以下是一个简单的C语言程序,可以实现为指定的文本文件创建一个副本文件的命令:

```c
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
FILE *fp1, *fp2;
int ch;

if (argc != 3) {
printf("Usage: %s source_file dest_file\n", argv[0]);
exit(EXIT_FAILURE);
}

fp1 = fopen(argv[1], "r");
if (fp1 == NULL) {
perror("fopen");
exit(EXIT_FAILURE);
}

fp2 = fopen(argv[2], "w");
if (fp2 == NULL) {
perror("fopen");
fclose(fp1);
exit(EXIT_FAILURE);
}

while ((ch = getc(fp1)) != EOF) {
putc(ch, fp2);
}

fclose(fp1);
fclose(fp2);

printf("File \"%s\" copied to \"%s\".\n", argv[1], argv[2]);

return 0;
}
```

在上述代码中,我们首先读取命令行参数 `argc` 和 `argv[]`,判断输入参数是否有误。然后使用 `fopen()` 函数打开源文件和目标文件,并使用 `getc()` 和 `putc()` 函数分别逐个字符地读取和写入文件内容。最后,关闭文件并输出复制成功的信息。

例如,运行如下命令:

```
./a.out D:\a.txt C:\b.txt
```

将会在C盘根目录下创建文件“b.txt”,并将D盘下的文件“a.txt”内容复制到“b.txt”中。

需要注意的是,在实际应用中还需要考虑更多的边界情况和错误处理。例如,需要检查文件是否成功打开和关闭,以及文件读写是否出错等。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-12-21
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// 检查命令行参数的数量是否正确
if (argc != 4) {
printf("Usage: %s source_file destination_file\n", argv[0]);
return 1;
}
// 打开源文件和目标文件
FILE *source_file = fopen(argv[1], "r");
if (source_file == NULL) {
perror("Error opening source file");
return 1;
}
FILE *destination_file = fopen(argv[2], "w");
if (destination_file == NULL) {
perror("Error opening destination file");
return 1;
}
// 逐个字符地复制文件
int ch;
while ((ch = fgetc(source_file)) != EOF) {
fputc(ch, destination_file);
}
// 关闭文件并退出
fclose(source_file);
fclose(destination_file);
return 0;
}
该程序使用了标准库文件 I/O 函数 fopen 和 fgetc 来打开源文件和目标文件,并使用 fputc 函数来复制文件。
相似回答
大家正在搜