【问题标题】:How to read char after char from command line parameter?如何从命令行参数读取字符后的字符?
【发布时间】:2013-10-05 07:50:39
【问题描述】:

我是 C 语言的初学者。在我的程序中,用户将通过命令行添加一个参数。此参数将是一个字符串,例如“你好吗”。我想从这个字符串中读取字符后的字符。该字符串的大小未知。所以执行程序的例子(在 Windows 中)是:测试“你好,你好吗”

类似

#include <stdio.h>

int main()
{
  char c;  

  while ((c = getchar()) != EOF)
    putchar(c);
  return 0;
}

字符 c 应该从输入字符串中读取,这是我做不到的。 我希望我说清楚了。

感谢您的帮助。

【问题讨论】:

    标签: c windows string command-line


    【解决方案1】:

    getchar 从标准输入读取,因此您的程序所做的就是从标准输入逐字符读取,并将它们打印到标准输出。有一个错误,你应该将c声明为int,因为EOF通常是-1


    但是,您正在尝试打印命令行参数。要做到这一点,您不需要逐个字符地执行此操作。您需要使用带有如下参数的main 版本:

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

    当你调用程序test "Hello, how are you"时,argv[1]已经是参数字符串Hello, how are you。您可以直接使用此字符串。

    代码我就不给你了,你可以用printf来打印字符串。如果您想获取每个字符,请使用循环从字符串 argv[1] 中获取它。

    【讨论】:

      【解决方案2】:

      C 中的命令行参数被传递给主函数。您必须使用以下签名声明主函数:

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

      那么argc是命令行参数的个数,argv是包含每个参数的字符串数组。

      然后您可以通过一个简单的循环访问每个字符:

      int i;
      for (i = 0; argv[1][i] != 0; i++) {
          char c = argv[1][i];
          // Use c as you need
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-27
        • 1970-01-01
        相关资源
        最近更新 更多