C Unix命令行参数帮助

C Unix命令行参数帮助,c,unix,command-line,command-line-arguments,C,Unix,Command Line,Command Line Arguments,我目前正在尝试读取15000个整数的输入文件,并将这些值传递到数组中。当涉及到将命令行参数传递到程序中时,我真的很生疏,所以也许我没有用正确的方法来做这件事。以下是我迄今为止编写的代码: #include <stdio.h> int main(int argc, char *argv[]) { int i; FILE *fp; int c; int values[15000]; char line[32]; int index = 0; for (i = 1; i < ar

我目前正在尝试读取15000个整数的输入文件,并将这些值传递到数组中。当涉及到将命令行参数传递到程序中时,我真的很生疏,所以也许我没有用正确的方法来做这件事。以下是我迄今为止编写的代码:

#include <stdio.h>

int main(int argc, char *argv[]) {
int i;
FILE *fp;
int c;
int values[15000];
char line[32];
int index = 0;

for (i = 1; i < argc; i++) {
    fp = fopen(argv[i], "r");

    if (fp == NULL) {
        printf(stderr, "cat: can't open %s\n", argv[i]);
        continue;
    }

    while (fgets(line, sizeof(line), fp) != NULL) {
        scanf(line, "%d", values[index];
        index++;
    }

    fclose(fp);
}

return 0;
}
我的代码或命令行参数有错误吗?或者两者都有错误吗

gcc -o prob5 prob5.c
./prob5 input.txt
假设源文件(如图所示…)名为prob5.c-您没有提到:)

#包括
int main(int argc,char*argv[])
{
int i;
文件*fp;
int值[15000];
字符行[32];
int指数=0;
对于(i=1;i
试试看

假设源文件(如图所示…)名为prob5.c-您没有提到:)

#包括
int main(int argc,char*argv[])
{
int i;
文件*fp;
int值[15000];
字符行[32];
int指数=0;
对于(i=1;i
问题在于你的执行
gcc
是一个编译器/链接器,您不应该传入输入文件:

gcc -o prob_5 prob_5.c
./prob_5 input.txt

问题在于你的执行力
gcc
是一个编译器/链接器,您不应该传入输入文件:

gcc -o prob_5 prob_5.c
./prob_5 input.txt

你需要编译源代码

gcc prob_5.c -o prob_5 gcc问题5.c-o问题5 然后使用命令行参数运行二进制文件

./prob_5 input.txt ./prob_5 input.txt
你所做的是编译器试图将一堆数字解释为源代码。

你需要编译源代码

gcc prob_5.c -o prob_5 gcc问题5.c-o问题5 然后使用命令行参数运行二进制文件

./prob_5 input.txt ./prob_5 input.txt
编译器试图将一堆数字解释为源代码。

哇!我的源文件实际上名为prob_5.c。谢谢!我刚刚抓住了缺少的括号。关于扫描修复,我们。。。我也解决了这个问题。:)我是否正确地将值读入数组?我有一个printf(“%d”,值[0]);语句测试第一个索引处是否有值,但程序不返回任何内容。是的,我捕获了索引<15000的错误检查并将其添加到代码中。我看不到它可能在哪里。。。。啊&值[索引]似乎已经修复了它。干杯。下一次,请提及什么时候是发现/修复错误的时候:)让我们更清楚地了解你在做什么以及你应该学习什么。(出于良心考虑:您是否了解所有修复程序?提示:您至少需要阅读%d和sscanf上的sscanf/scanf手册页;您是否发现了一件无害但也没有用的东西?我删除了它:))祝您好运!我的源文件实际上名为prob_5.c。谢谢!我刚刚抓住了缺少的括号。关于扫描修复,我们。。。我也解决了这个问题。:)我是否正确地将值读入数组?我有一个printf(“%d”,值[0]);语句测试第一个索引处是否有值,但程序不返回任何内容。是的,我捕获了索引<15000的错误检查并将其添加到代码中。我看不到它可能在哪里。。。。啊&值[索引]似乎已经修复了它。干杯。下一次,请提及什么时候是发现/修复错误的时候:)让我们更清楚地了解你在做什么以及你应该学习什么。(出于良心考虑:您了解所有修复程序吗?提示:您至少需要真正阅读%d和sscanf上的sscanf/scanf手册页;您是否发现了一件无害但也没有用的东西?我删除了它:))祝您好运!我应该提到的是,我也尝试过这一点,但也出现了一些错误。刚刚注意到我在第20行缺少括号。谢谢!我应该提到的是,我也尝试过这一点,但也出现了一些错误。刚刚注意到我在第20行缺少括号。可能重复@sehe是的,我不确定在连续练习中提问的协议是什么。我认为每当我遇到一个新问题时,我应该编辑帖子,但有人建议我为每个停止点提交一个新问题,以便更快地得到答案。可能重复@sehe是的,我不确定在连续练习中提问的协议是什么。我认为每当我遇到一个新问题时,我应该编辑这篇文章,但有人建议我在每个停止点提交一个新问题,以便更快地得到答案。