【发布时间】:2017-09-14 02:50:43
【问题描述】:
我是 C/C++ 的新手,我正在学习命令行参数。我正在尝试使用 strcpy 对我的命令行参数进行排序,但是它给了我不好的输出。 例如
我/p:我是
o/p : 亲 我
谁能帮我解决我在这里做错了什么?请注意:我只为 argc=3 运行此程序,并且我只为上面示例中列出的输入(将被排序)运行此代码。 我刚刚删除了用于调试的循环。
#include "iostream"
#include "cstdlib"
#include "cstring"
using namespace std;
int main (int argc, char **argv)
{
char temp[100];
//sorting my command line arguments
if(strcmp(argv[1],argv[2])>0)
{
strcpy(temp,argv[1]);
strcpy(argv[1],argv[2]);
strcpy(argv[2],temp);
}
cout<<argv[1]<<endl;
cout<<argv[2]<<endl;
return 0;
}
【问题讨论】:
-
命令行参数的大小不会自动改变,所以你不能像那样复制它们(除非它们的长度都一样)。
-
@CroCo 我首先比较字符串,并在此基础上进行交换/排序。
-
@Galik 那么如何对可变长度的参数进行排序?
-
“对 C/C++ 相当陌生”。您可以从选择两者之一开始。在 C++ 中,这是微不足道的。
std::vector<std::string> args(argc, argc+argv); if (args[1]<args[2]) swap(args[1],args[2]);
标签: c++ command-line-arguments strcpy