尝试对 C 中的字符串中的字符进行排序。对它们的 ASCII 代码进行排序。我尝试了冒泡排序和选择排序方法。
char stroka[]="This programmator";
int n=17,tmp;
for (int i=n-1;i>=0;i--)
for (int j=n-2;j>=0;j--)
if(stroka[j]>stroka[j+1])
{
tmp=stroka[j];
stroka[j]=stroka[j+1];
stroka[j+1]=tmp;
}
printf("%s",stroka);
这个分配一切都很好:
char stroka[]="This programmator";
但它失败了
char *stroka="This programmator";
因为该算法编辑 protected 数组。 我可以创建另一个堆值,例如
char *stroka_new= malloc(17);
并在那里写入排序数组。它不 protected 。 如何使其按新值排序?也许有人知道不替换值的排序算法?
最佳答案
一种方法是strdup()
原始字符串并对结果进行排序(不要忘记在最后释放它)?
关于c - 对字符进行排序而不替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20442461/