【发布时间】:2015-08-19 19:36:04
【问题描述】:
#include<conio.h>
#include<stdio.h>
int main(void)
{
int i,j,temp;
char str[]="geeksforgeeks";
for(i=1;str[i];i++)
{
for(j=0;str[j]!='\0';j++)
{
if(str[j]>str[j+1])
{
temp=str[j];
str[j]=str[j+1];
str[j+1]=temp;
}
}
}
for(i=0;str[i]!='\0';i++)
{
printf("%c",str[i]);
}
}
我希望它在不计算字符串长度的情况下完成。我知道错误在 for 循环的条件语句中,然后告诉我它应该是什么?
【问题讨论】:
-
错误!!
if(str[j]>str[j+1])是最后一个元素的 UB。 -
您还应该提供一个示例测试用例(输入和输出)。或者如果代码崩溃告诉我们错误信息!这将有助于更好地了解问题所在:)
-
目前非常不清楚您要问什么,以及您要做什么。解释你正在尝试做什么,出了什么问题,以及为什么你知道这是错误的。然后问一个明确的问题。通过这样做,你会产生更多的帮助意愿,因为我们都想提供帮助,但我们不想永远花时间弄清楚你想要什么。
-
我想在不计算字符串长度的情况下使用冒泡排序对字符串进行排序
-
.. 完善我之前的评论,不是完全 UB,而是与字符串终止符进行比较。