我正在编写以下代码以反转字符串,而不反转单词。例如,I / P:这是斯巴达O / P:斯巴达是这
这是代码:
#include<stdio.h>
#include<string.h>
#include<conio.h>
void main()
{
char a[50],b[50];
int i,j,k,l;
printf("Enter a string: ");
scanf("%[^\n]s",a);
l=strlen(a);
i=0;j=l-1;
ae:
for(i;;i++)
if(a[i]==' ' || a[i]=='\0')
break;
k=i;
for(j;;j--,k--)
{
if(a[k]==' ' || k==0)
break;
else
b[j]=a[k-1];
}
if(strlen(b)!=l) goto ae;
else
printf("%s",b);
getch();
}
该代码将运行所有错误,但是在接受字符串之后,它不会继续进行下去。终端有点上吊。我不知道出什么问题了。请帮忙。
我调试了您的程序,发现的问题是您的程序进入了永无止境的循环。
for(i;;i++)
if(a[i]==' ' || a[i]=='\0')
break;
当a [i]等于''时,上述循环在i = 4处中断。在执行goto之后,我仍然是4,并且当
if(a[i]==' ' || a[i]=='\0')
break;
被评估为i仍然为4,因此再次从循环中中断,从而导致无休止的循环。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句