字符串指针自加问题

fowlerowen 2003-10-09 12:00:55
以下程序把一个字符串的前后连续空格去掉,中间连续空格变成单个空格,请看看如下函数,为什么编译时老是出错

char *Make(char *s){
char *p,*q;
p=s;q=s;
for(;*s=='';s++);
for(;s;){
q++=s;
if(*s!='') p++=s;
else
while(*s=='') s++;
}
if(q>p&&*(q-1)=='') *(q-1)='\0';
else q='\0';
return q;
}

编译时,总是说我第6、7行出错,错误如下:Lvalue required in function Make
我让指针q指向s然后自加有何不妥?
...全文
81 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sakurar 2003-10-09
  • 打赏
  • 举报
回复
s、q与p都是char*,p++或q++后就是移到下一位。然后再把s赋给它,完全没有意义的事。
你是不是少加了个*??
liao2001 2003-10-09
  • 打赏
  • 举报
回复
char *mark(char *src)
{
char *pc1,*pc2;

pc2=src+strlen(src)-1;
for(;*pc2==' '&&pc2>=src;pc2--);
pc2[1]=0;
pc1=pc2=src;
for(;pc2==' ';pc2++);
for(;pc2;pc2++){
if(pc2[0]==' '&&pc2[1]==' ')
continue;
*pc1=*pc2;
pc1++;
}
*pc1=0;
return src;
}
laomai 2003-10-09
  • 打赏
  • 举报
回复
自增和自减运算符不能做左值的啊
Weigehoho 2003-10-09
  • 打赏
  • 举报
回复
人脑修理工很棒
非常精彩,代码我收藏了,谢谢
darcymei 2003-10-09
  • 打赏
  • 举报
回复
楼上的代码写的不错啊:)
就是字符窜最后没规定一定有空格阿!还是先判断下好
sakurar 2003-10-09
  • 打赏
  • 举报
回复

char* Make(char* dest)
{
const char word = ' ';
char *p1, *p2;

p1 = p2 = dest;

while( *p2 == word )
{
p2++;
}

while( *p2 )
{
*p1 = *p2++;
if( *p1 == word && *p2 == word )
{
continue;
}
p1++;
}

p1[-1] = 0;

return dest;
}

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧