【问题标题】:Copying contents from one file to another using the terminal in C使用 C 中的终端将内容从一个文件复制到另一个文件
【发布时间】:2017-03-28 19:50:02
【问题描述】:

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

当我尝试编译代码时,我不断收到这个错误,我不确定为什么。

这是我的代码:

#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:对于架构 x86_64,文件太小(长度 = 0)文件“file2.txt” clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

【问题讨论】:

  • 哪个错误?请复制错误的文本并将其粘贴到您的帖子正文中。不要链接到屏幕截图。
  • “无法打开文件”是错误消息的典型示例。哪个文件?为什么打不开?有很多关于如何编写更好的错误消息的好例子。一个这样的例子是偶然在一个你必须阅读的答案中的一个不同的原因:stackoverflow.com/questions/5431941/…
  • 请使用edit 按钮将错误文本添加到您的问题正文中。不要为此使用 cmets。 不要链接到屏幕截图
  • 您似乎正在尝试使用 file2.txt 作为链接器的参数。这不太可能奏效。请发布您的构建命令。

标签: c macos terminal copy


【解决方案1】:

您正在尝试使用编译器来运行程序。用 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 

【讨论】:

  • 非常感谢!我现在明白了!
猜你喜欢
  • 2022-11-24
  • 1970-01-01
  • 2018-05-10
  • 2020-09-26
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多