【问题标题】:Command Line Arguments and File Input命令行参数和文件输入
【发布时间】:2011-09-16 06:39:47
【问题描述】:

上学期我在命令行参数的文件输入方面度过了一段糟糕的时光,我需要利用它来进行我正在进行的练习。我编写了一个简单的 shell 来让它工作:

prob_5.c

#include <stdio.h>

int main(int argc, char *argv[]) {
int i;
FILE *fp;
int c;

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

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

    while ((c = getc(fp)) != EOF) {
        putchar(c);
    }

    fclose(fp);
}

return 0;
}

我似乎不记得从命令行调用我的程序的命令是什么。我试过了:

gcc -o prob_5 -g -ansi prob_5.c

自上学期以来我已经重新格式化了我的计算机,所以也许我缺少系统路径?

【问题讨论】:

  • 您遇到什么错误?到底是什么问题?

标签: c visual-studio-2010 command-line command-line-arguments


【解决方案1】:

看起来您的程序只需要一个参数:文件名。您还必须先编译它。

$ gcc -o prob_5 prob_5.c
$ ./prob_5 input_file.txt

如果它没有编译,那么你有另一个问题。执行gcc返回什么?

【讨论】:

  • 谢谢。我不记得我是否能够在我的 Windows 7 系统上通过命令行进行编译,或者我是否使用了 VCL 连接。 Windows 能识别 gcc 命令吗?我是否需要向系统或环境变量添加任何路径?如果有帮助,我正在使用 MS Visual Studio 2010。
  • 嗯,这有点改变。 gcc 是一个标准的 Linux 程序,如果你已经安装它并且它在路径中,它只能在 Windows 7 上运行。如果您使用的是 Visual Studio,您可能应该通过 GUI 编译和运行它。
  • 明白了。上学期我必须登录到 Linux shell 进行编译,因为我不记得通过 VS 让它与输入文件一起运行。右键单击我的 prob_5.c 文件并选择属性,我在命令行下看到这些选项: /ZI /nologo /W3 /WX- /Od /Oy- /D "WIN32" /D "_D​​EBUG" /D "_WINDOWS " /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fp"Debug\prob_5.pch" /Fa"Debug\" /Fo"Debug \" /Fd"Debug\vc100.pdb" /Gd /analyze- /errorReport:queue 我将使用哪个来传递我的 input.txt 参数?
  • 这些是编译器参数。你想要执行参数。我不知道设置在哪里,因为我很长时间没有使用 Visual Studio。如果您仍然可以访问那个 Linux shell,它可能看起来会好一些,嗯?
  • 重新登录 Linux shell 以尝试使其正常工作。 gcc -o prob_5 prob_5.c 返回以下错误: prob_5.c: (.text+0x68): undefined reference to 'fprint' collect2: ld returned 1 exit status
猜你喜欢
  • 2012-10-22
  • 2020-08-28
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 2014-10-19
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
相关资源
最近更新 更多