【发布时间】:2017-01-27 19:00:17
【问题描述】:
我想对一组命令行参数进行排序。所有参数都是整数。 这是我的代码,但它不起作用。
#include <iostream>
using namespace std;
int main (int argc, char *argv[]) {
for (int i=0; i<argc-1; ++i) {
int pos = i;
for (int j=i+1; j<argc; ++j) {
if (argv[j] - '0' < argv[pos] - '0') {
pos = j;
}
}
char *tempt = argv[i];
argv[i] = argv[pos];
argv[pos] = tempt;
}
for (int i=0; i<argc; ++i) {
cout << argv[i] <<endl;
}
}
编译后,当我调用./a.out 4 3 2 1时,它仍然在屏幕上打印4 3 2 1而不是1 2 3 4。
怎么了?
提前致谢。
【问题讨论】:
-
argv[j] - '0'没有做你认为它正在做的事情。 -
是的,也许你的意思是
argv[j][0] - '0' < argv[pos][0] - '0'开始,完整的strcmp用于多字符参数。 -
非常感谢!解决了!
-
请通过发布您的解决方案回馈社区。span>
标签: c++