gpt4 book ai didi

c - 按特定顺序对 argv 进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 04:30:29 24 4
gpt4 key购买 nike

我试图按字母顺序对所有参数 argv 进行排序,但我不明白为什么当我输入 3 个或更多参数时我的代码不起作用。

#include <stdio.h>
#include <stdlib.h>
void swap(int argc, char argv[]);

int main(int argc, char **argv) {
swap(argc, argv);

system("PAUSE");
return 0;
}
void swap(int argc, char argv[]) {
int i, j;
char temp;

for (i = 0; i < argc; i++)
{
for (j = 0; j < argc; j++)
{
if (strcmp(*(argv + j), *(argv + j + 1)) > 0)
{
temp = *(argv + j);
*(argv + j) = *(argv + j + 1);
*(argv + j + 1) = temp;
}
}
}
}

最佳答案

您正在向 swap 传递一个字符数组。

因此,当您将 argv 的元素与 swap 函数进行比较时,您是在比较 char 而不是字符串(char 数组)。

所以你不应该调用 strcmp 来比较 char。 (strcmp 找不到 '\0' 符号,因此引发错误)。

您可以将 char 与 '>' 运算符进行比较。

 if (*(argv + j) > *(argv + j + 1 )) 

编辑:

如果你想使用字符串。你应该研究一下 C 中的内存表示。

C memory rappresentation

所以你的错误发生是因为 (argv + j) 不是 j 字符串。

请研究一下。

关于c - 按特定顺序对 argv 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36838408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com