C语言以空格为标记将字符串倒排----为什么运行出错

来源:百度知道 编辑:UC知道 时间:2024/09/21 01:26:03
各位大侠
编个小程序,结果很郁闷,救命
将you aie,a wer;gong boy以空格或标点为间隔倒排
欲得到boy gong wer a aie you的结果,标点以空格替代

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
main(){
int s;int j;int m;int n=0; char y[80];
char xx[]="you aie,a wer;gong boy";
s=strlen(xx);
for(j=0;xx[j]!='\0';j++)
{if(isalnum(xx[j])==1)y[j]=xx[j];
else y[j]=' ';}
for(j=s-1;j>=0;j--)
{if(y[j]==' ')
{for(m=j+1;y[m]!='/0' && y[m]!=' ';m++)
xx[n++]=y[m];
xx[n++]=' ';}
}
for(i=0;xx[i]!='\0';i++)printf("%s\n",xx[i]);
}

程序已经改好
1.isalnum()函数当参数是数字或者字母的时候返回非0值,其它是0
2.字符串拷贝完后要加上结束符'\0';
3.输出字符串可以用%s
4.程序中用到了三元运算符
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
main(){
int s;
int j;
int m;
int n=0;
char y[80];
char xx[]="you aie,a wer;gong boy";
s=strlen(xx);
for(j=0;xx[j]!='\0';j++)
{
if(isalnum(xx[j]))
y[j]=xx[j];
else
y[j]=' ';
}
y[j]='\0';

for(j=s-1;j>=0;j--)
{

if(y[j]==' '||j==0)
{
for(m=((j>0)?(j+1):j);y[m]!='\0'&& y[m]!=' ';m++)
xx[n++]=y[m];
xx[n++]=' ';
}
}
xx[n]='\0';
printf("%s",xx);
}