首页 > 解决方案 > C - 通过命令行将输入和输出文本文件传递给我的程序

问题描述

我需要以命令行形式通过我的程序传递两个文件

./your_executable inputfile.txt outputfile.txt

在我的示例中,我正在使用

gcc coursework.c CircleCode.txt CircleCode_tmp.txt

因此第二个文件不存在并在程序中打开。

int main(int argc, char **argv[])
{
    FILE *orginalFile = fopen(*argv[1], "r");
    FILE *newFile = fopen(*argv[2], "w");

    if (orginalFile == NULL || newFile == NULL)
    {
        printf("Cannot open file");
        exit(0);
    }
}

Clang中的错误:

error: no such file or directory: 'CircleCode_tmp.txt'

标签: cfile-handling

解决方案


你的签名main()不对。

它可以将其更改为

int main(int argc, char *argv[])                                       

或者

int main(int argc, char **argv)                                        

因为argv是指向一个字符串数组。

看到这个帖子


由于您的程序需要输入和输出文件才能工作,因此您应该检查是否收到了所需数量的参数。

argc将有参数的数量。由于用于运行程序本身的命令名称与两个文件一起计为参数,因此程序至少需要 3 个参数。

所以你可以做类似的事情

if(argc<3)
{                                                                        
   perror("Not enough arguments.");                                       
   return 1;                                                              
} 

此外,与

gcc coursework.c CircleCode.txt CircleCode_tmp.txt  

您还要求编译器编译您的输入和输出文本文件,这可能不是您想要的。

相反,你可以做

gcc -Wall coursework.c -o your_executable

编译程序然后像这样运行它

./your_executable CircleCode.txt CircleCode_tmp.txt

-Wall选项gcc用于启用一些警告,这些警告可以更好地帮助您发现和纠正错误。

也请参阅讨论。


推荐阅读