使用 C 中的终端将内容从一个文件复制到另一个文件

标签 c macos terminal copy

我正在尝试使用 mac 上的终端将内容从一个文件复制到另一个文件中。

当我尝试编译代码时,我不断收到此错误,我不确定原因。

这是我的代码:

#include <stdio.h>
#include <stdarg.h>

int main(int argc, char *argv[])
{
    FILE *f1Ptr, *f2Ptr;
    char x;

    if(argc != 3)
    {
        printf("Incorrect number of arguments\n");
    }

    f1Ptr = fopen(argv[1], "r");
    f2Ptr = fopen(argv[2], "w");

    if(f1Ptr == NULL || f2Ptr == NULL)
    {
        puts("File could not be opened");
    }

    while(!feof(f1Ptr))
    {
        x = fgetc(f1Ptr);
        fputc(x, f2Ptr);
    }

    printf("File has been copied\n");

    fclose(f1Ptr);
    fclose(f2Ptr);

return 0;
}

这是错误

ld: file too small (length=0) file 'file2.txt' for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

构建命令:“gcc q2.c file1.txt file2.txt ld: file too small (length=0) file'file2.txt' for architecture x86_64 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

最佳答案

您正在尝试使用编译器来运行程序。它不像 C 那样工作。您构建程序,然后运行它。

此外,C 不同于 Python 等解释型语言或 Java 等基于 VM 的语言。当您成功编译 C 程序时,您会得到一个可以直接运行的结果。不需要解释器或启动器。

例如,

gcc -o q2 q2.c

./q2 file1.txt file2.txt 
./q2 file2.txt file3.txt 
./q2 file7.txt file42.txt 

关于使用 C 中的终端将内容从一个文件复制到另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43078620/

相关文章:

java - 在 Mac 上设置 JAVA_HOME 路径时出现问题?

python 子进程不能很好地使用 gsutil 复制/移动命令

python - 在尝试无效命令时,终端中的 Ctrl+C 生成 python 回溯

c - 三重指针、数组和 malloc

c - 从循环中获取数组中的字符串

c - 与正常函数调用相比仍然没有得到回调

c - 为什么我的内核日志没有显示最新的输出?

macos - 为什么docker占用了这么多VIRT内存?

objective-c - NSFilemanager 和安全删除

mysql - 执行 SQL 脚本以创建表和行