我try 使用C中的argv
从命令行中读取单词,然后根据它们的长度按降序对它们进行排序.然而,我的排序算法产生了意外的输出.
我使用的代码如下:
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
for (int i = 1; i < argc - 1; i++) {
for (int j = 1; j < argc - i - 1; j++) {
if (strlen(argv[j]) < strlen(argv[j + 1])) {
char temp_word[20];
strcpy(temp_word, argv[j]);
strcpy(argv[j], argv[j + 1]);
strcpy(argv[j + 1], temp_word);
}
}
}
puts("\n");
for (int i = 1; i < argc; i++) {
printf("%s ", argv[i]);
}
return 0;
}
gcc test.c -o test
./test I put this words
puwordI wordI I %
不幸的是,输出被 destruct 了.我怀疑我的排序逻辑或处理命令行参数的方式可能有问题.谁能判断一下我的代码,并提供指导如何正确地按长度对单词进行排序?