c - 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'
解决方案
你的签名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
用于启用一些警告,这些警告可以更好地帮助您发现和纠正错误。
也请参阅此讨论。
推荐阅读
- numpy - 调整 numpy 图像数组的大小
- python - 如何修复索引 4 超出轴 0 大小为 4 的范围?
- server-side-rendering - ReferenceError:在角度 9 中运行 SSR 时未定义窗口
- r - R:从混合数字和字母的字符串中提取最大数字
- javascript - 如何在不使用 nativeElement 的情况下自动聚焦 Angular 10 中的表单控件
- laravel - NGINX 和 Laravel - 带有特殊字符的 json 发布请求
- python - AttributeError: 'WebElement' object has no attribute 'get_text' 使用 Selenium Python 提取开始和结束标记之间的文本时出错
- javascript - 如何从 react 和 firebase 为每个用户创建用户页面
- azure - 如何在 Azure DevOps Pipeline (Salesforce) 中增加标签
- asp.net - 为什么插入过程在 ASP.NET 中不起作用