【发布时间】:2014-05-03 09:33:10
【问题描述】:
我正在编写以下代码来反转字符串,而不反转单词。例如 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();
}
此代码运行时没有错误,但在接受字符串后,它根本不会走得更远。终端有点挂了。我不知道有什么问题。请帮忙。
【问题讨论】:
-
你为什么用
%[^\n]s来阅读? -
您有两个
for循环,在其中任何一个中都没有停止条件,您期望什么??? -
当然是读取字符串。我什至使用了gets()。但是遇到了同样的问题
-
它在循环内部中断,这就是为什么? @barakmanos
-
a[i]==' '没有改变代码,当 a[i] : ' '.