+ -
当前位置:首页 → 问答吧 → 哪里错了?

哪里错了?

时间:2011-12-16

来源:互联网

#include<stdio.h>
main()
{char a[]="this is a ……",*p;
p=a;
for(;*p;p++)
if(*p==' '&&*(p+1)!=' ') *p=*(p+1);
*(p+1) ='!';
*(p+2)='\0';
puts(a);

}

作者: q1304622669   发布时间: 2011-12-16

if(*p==' '&&*(p+1)!=' ') *p=*(p+1);

//这里只是改变了一个空格。之后的元素应该都一起向前面移动才对。

作者: mingliang1212   发布时间: 2011-12-16

char*pdes = p;
for(;*p;)
  if(*p == ' ');
  p++;
  else 
  *pdes++ = *p++;

作者: mingliang1212   发布时间: 2011-12-16

楼主是想输出什么?输出“this!"?还是要把句子中的空格去掉?

作者: baizhishan   发布时间: 2011-12-16

引用 2 楼 mingliang1212 的回复:
char*pdes = p;
for(;*p;)
if(*p == ' ');
p++;
else
*pdes++ = *p++;

+1需要好用到两个指针 一个指针还真没好方法

作者: hnuqinhuan   发布时间: 2011-12-16

*(p+1) ='!';
*(p+2)='\0';
上面这两句中不是在最后加的!和空格,应该改一下*(p) ='!';*(p+1)='\0';,将*p控制在最后一位上。
比如:#include<stdio.h>
main()
{char a[]="this is a ......",*p;
p=a;
for(;*p;p++)
if(*p==' '&&*(p+1)!=' ') *p=*(p+1);
*(p) ='!';
*(p+1)='\0';
puts(a);
}

作者: f631675631   发布时间: 2011-12-16

如果是去掉句子中的空格的话,试试这样改一下
#include<stdio.h>
int main()
{
  char a[]="this is a ……",*p;
  int i=0;
  p=a;
  for (;*p;p++)
  {
  if (*p==' ')
continue;
else
{
a[i]=*p;
i++;
}
  }
  a[i]='!';
  a[i+1]='\0';
  puts(a);
return 0;
}

作者: baizhishan   发布时间: 2011-12-16