【问题标题】:Confused about command prompt, Visual Studio exe's and text files?对命令提示符、Visual Studio exe 和文本文件感到困惑?
【发布时间】:2012-12-06 00:08:29
【问题描述】:

标题并没有真正做到这一点。其实很简单,就是我的问题。我有一个用 C 语言编写的程序(下面的代码)。我希望这个程序创建一个 exe 文件,该文件可以通过命令提示符控制台窗口运行,并且还将一个文本文件作为参数。所以,长话短说;我需要它在 CMD 的命令行中这样说:

C:\Users\Username\Desktop\wrapfile.exe 内容.txt

我唯一的问题是正确编写代码。我想告诉Visual Studio:“你应该打开的文件是在命令提示符窗口中作为参数给出的,没有设置位置……”

我该怎么做?

这是我的工作代码(尽管您必须更改 *fp 定义中的一些内容。

#include <stdio.h>
#include <stdlib.h>


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

    FILE *fp; // declaring variable 


    fp = fopen("c:\\users\\*Put you're PC username here*\\Desktop\\contents.txt", "rb"); // opens the file


    if (fp != NULL) // checks the return value from fopen
    {
        int i;
        do
        {
            i = fgetc(fp);     // scans the file 
            printf("%c",i);
            printf(" ");
        }
        while(i!=-1);
        fclose(fp);
    }
    else
    {
        printf("Error.\n");
    }
}

谢谢大家!

【问题讨论】:

  • 您应该调查argcargv[]main 的参数中的内容。这里有一个提示:一个是命令行参数包含在另一个中的数量。

标签: c visual-studio cmd


【解决方案1】:

正如 Ken 上面所说,main 方法的参数是您从命令行传入的值。 argc 是“参数计数”,argv 是“参数值”。所以要打开从命令行传入的第一个参数,更改

fp = fopen("c:\\users\\*Put you're PC username here*\\Desktop\\contents.txt", "rb"); // opens the file

fp = fopen(argv[1],"rb");

在您尝试打开输入之前,请确保进行错误检查(即 argv[1] 不为空)。另外仅供参考,在您的情况下, argv[0] 将是您的可执行文件的名称。

【讨论】:

  • 我尝试将 fp 声明更改为您提供的声明,但是,我似乎收到一条错误消息:“函数调用中的参数太少” 最后一个圆括号也带有下划线。有什么想法吗?
  • 对不起 :) 我发布原始答案时忘记包含模式,请参阅我的修改。
  • 另外,如果这里的答案对您有用,请将其标记为解决方案?每个人都欣赏更多的声誉!
  • 是的,我接受了它作为答案。我是stackoverflow的新手,所以如果我还有什么可以说谢谢的,请告诉我:D您,先生,我脸上露出了微笑! :D
  • @JamesHeartly 谈到问题时,接受解决方案可以提高解决方案的发布者声誉,它还有助于您的“接受百分比”统计。问题发布者的“接受百分比”统计数据越好,人们回答问题的可能性就越大。我也是新手,但和我一样,我相信你会很快掌握它的窍门!
猜你喜欢
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多