【发布时间】:2018-07-16 10:44:23
【问题描述】:
我试图交换数组中的元素(这是非常基本的,但是当我尝试更改数组的索引时,它会弄乱整个数组)
#include <string.h>
#include <stdio.h>
int main(int argc, char **argv)
{
int swap;
int position;
char temp[1000];
char *i;
swap = 1;
while (swap == 1)
{
swap = 0;
position = 1;
while (position < (argc - 1))
{
if (strcmp(argv[position], argv[position + 1]) > 0)
{
strcpy(temp, argv[position + 1]);
strcpy(argv[position], argv[position + 1]);
strcpy(argv[position + 1], temp);
}
position++;
}
}
return (0);
}
从上面的代码中,如果我输入“hi”和“hello”,而不是打印 “你好”“嗨”,它带来了“你好”“洛”,超级奇怪。
但是,当我只是简单地使用指针(下面的代码)时,它可以完美地工作。
#include <string.h>
#include <stdio.h>
int main(int argc, char **argv)
{
int swap;
int position;
char temp[1000];
char *i;
swap = 1;
while (swap == 1)
{
swap = 0;
position = 1;
while (position < (argc - 1))
{
if (strcmp(*(argv + position), *(argv +position + 1)) > 0 )
{
i = *(argv + position);
*(argv + position) = *(argv + (position + 1));
*(argv + position + 1) = i;
swap = 1;
}
position++;
}
}
return (0);
}
你能告诉我第一种方法有什么问题吗?
【问题讨论】: