将值传递给 main(int, char**)
Posted
技术标签:
【中文标题】将值传递给 main(int, char**)【英文标题】:Passing values to main(int, char**) 【发布时间】:2014-09-16 20:20:48 【问题描述】:我有一个显示 ascii 值和字母的程序,但现在我修改了程序以仅显示我正在寻找的西班牙字符。该程序被称为,是的,你明白了,“ascii”。用户需要做的是输入C:>ascii
或C:>ascii all
来显示所有的ascii 字符。要仅显示西班牙语字符,用户必须输入 C:>ascii es
。
为此我编写了这个简单的程序
int main(int argc, char** argv)
if(argv[0] == "es")
abc::ascii_es();
if(argv[0] == "all")
abc::ascii_all();
else
abc::ascii_es();
return 0;
但程序总是跳转到 else 条件关键字中的ascii_es
方法。
我做错了什么?
【问题讨论】:
argv[0]
是程序本身的路径。你可能应该使用strncmp
而不是==
。
strcmp
可能比strncmp
更好
【参考方案1】:
问题:
-
您不是在比较字符串,而是在比较指针。您可以通过将其中一个参数更改为
std::string
或使用 strcmp(...) == 0
来解决此问题。
argv[0]
是您的程序的名称。第一个参数使用argv[1]
。
您没有检查程序是否有参数。如果没有,那么访问argv[1]
将导致未定义的行为。
一些工作代码:
#include <string>
int main(int argc, char** argv)
if (argc < 2)
abc::ascii_es();
else if (argv[1] == std::string("es"))
abc::ascii_es();
else if (argv[1] == std::string("all"))
abc::ascii_all();
else
abc::ascii_es();
return 0;
【讨论】:
以上是关于将值传递给 main(int, char**)的主要内容,如果未能解决你的问题,请参考以下文章
MS Access 2007 - OpenArgs 没有将值传递给下一个表单?