#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循环的条件语句中然后告诉我它应该是什么?
答案 0 :(得分:1)
正如Weather Vane已经指出的那样,错误发生在str[j]>str[j+1]
。这将使用NULL终止符切换第二个最后一个字符(因此会导致您错过for循环的结束条件)。
要解决此问题,请将for循环结束条件更改为str[j+1]!='\0'
并在开头添加一个检查,以确保数组中的第一个字符不是&#39; \ 0&#39;!我还建议研究泡泡搜索,因为这段代码有很多额外的迭代!