C 我的复制文件功能不是';他没有按预期工作

C 我的复制文件功能不是';他没有按预期工作,c,gcc,C,Gcc,这里是一个简单的程序,应该复制一个 将名为copyme的文件复制到文件中。我通过以下命令创建了带有少量文本的copyme: touch copyme.txt open copyme.txt 然后我输入文本,并用 触摸copyme.txt命令 然后我编译了一个程序: // Program to copy one file ot another #include <stdio.h> int main (void) { char in_name[64], out_name[6

这里是一个简单的程序,应该复制一个 将名为
copyme
的文件复制到文件
中。我通过以下命令创建了带有少量文本的
copyme

touch copyme.txt
open copyme.txt
然后我输入文本,并用
触摸copyme.txt
命令

然后我编译了一个程序:

// Program to copy one file ot another

#include <stdio.h>

int main (void)
{
    char in_name[64], out_name[64];
    FILE *in, *out;
    int c;

    // get file names from user

    printf("Enter name of file to be copied: ");
    scanf("%63s", in_name);

    printf("Entere name of output file: ");
    scanf("%63s", out_name);

    // open input and output files

    if ( (in = fopen(in_name, "r")) == NULL)
    {
        printf("Can't open %s for reading.\n", in_name);
        return 1;
    }

    if ( (out = fopen(out_name, "w")) == NULL)
    {
        printf("Can't open %s for writing.\n", out_name);
        return 2;
    }

    while ((c = getc(in)) != EOF)
        putc(c, out);

    // Close open files

    fclose (in);
    fclose (out);

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

    return 0;
}
编译器无法识别
copyme
文件,尽管它是 实际存在于文件夹中(我看到它,我打开它,我阅读 它)。 如果能得到帮助,我将不胜感激。我对这件事不熟悉。 谢谢大家!

变化

   if ( (in = fopen(in_name, "r")) == NULL)
    {
        printf("Can't open %s for reading.\n", in_name);
        return 1;
    }

#包括
如果((in=fopen(in_name,“r”))==NULL)
{
perror(“无法打开文件进行读取。\n”);
返回1;
}

您将收到一条可读消息,告诉您为什么它无法读取文件

看起来您没有访问此文件的权限查看fopen的
man
页面以获取错误您创建了一个名为copyme.txt的文件,然后键入copyme作为文件名!这与重定向有什么关系?您所指的“打开”命令是什么?为什么“触摸”它会导致您键入的内容被保存?这或重定向或“>”与您提供的代码有什么关系?这些代码基本上是试图将您正在读取的文件复制到输出文件中?我认为这并不能回答这个问题。这是一个非常有用的建议,太长了,无法放入注释。这是非常有用的,也是一个非常好的注释。但这个答案并不合适。我知道发表评论会有点大。可能是一个链接到一个例子会很好。@pm100谢谢!我不知道`#include(+1)相反,这确实回答了他不清楚的问题;他请求帮助,问为什么找不到文件;这会让他得到答案
   if ( (in = fopen(in_name, "r")) == NULL)
    {
        printf("Can't open %s for reading.\n", in_name);
        return 1;
    }
   #include <errno.h>
   if ( (in = fopen(in_name, "r")) == NULL)
    {

        perror("Can't open file for reading.\n");
        return 1;
    }