gpt4 book ai didi

c - 而不是对这些名称进行冒泡排序……程序崩溃了

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

我显然做错了什么,但是,对于我的生活,无法弄清楚是什么。

int main(int argc, char *argv[])
{
int done=0;
int end=0;
int didswap=0;
char *temp[2] = {0};
int i;
int x;
printf("This function Bubble sorts the Flintstones in alphabetical order!\n");
printf("The Flintstones names are:\nFred\nBarney\nWilma\nPebbles\nDino\n");
char *names[5] = {0};
names [0] = "Fred";
names [1] = "Barney";
names [2] = "Wilma";
names [3] = "Pebbles";
names [4] = "Dino";
while(end == 0)
{
for(i=0;i<4;i++)
{
if (strcmp(names[i],names[i+1])>0)
{
strcpy(temp[0],names[i]);
strcpy(temp[1],names[i+1]);
strcpy(names[i],temp[1]);
strcpy(names[i+1],temp[0]);
didswap = 1;
}
else
{
didswap = 0;
}
done = done+didswap;
}
if (done == 0)
end = 1;
else
done = 0;
}
printf("When alphabetized they are:\n");
for (i = 0; i < 5; i++)
{
printf("%s \n", names[i]);
}

system("PAUSE");
return EXIT_SUCCESS;
}

最佳答案

您有一个字符串文字数组。这些可能保存在只读存储器中,因此您无法更改它们的内容。但是,您可以通过替换

来更改在 names 中存储指向它们的指针的顺序
strcpy(temp[0],names[i]);
strcpy(temp[1],names[i+1]);
strcpy(names[i],temp[1]);
strcpy(names[i+1],temp[0]);

const char* tmp = names[i];
names[i] = names[i+1];
names[i+1] = tmp;

关于c - 而不是对这些名称进行冒泡排序……程序崩溃了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17706620/

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