标题:[求助]关于while ( *p2++=*(p1+n-1)++);,
只看楼主
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
 问题点数:0 回复次数:3 
[求助]关于while ( *p2++=*(p1+n-1)++);,

为什么错了,书上说这是交简单方法、但我用上却不对
#include<stdio.h>
#include<string.h>

void main()
{ void copystr(char * p1,char *p2,int n );
int m;
char str1[20]={0},str2[20];
printf("\n inpurt string one :\n");
gets(str1);
printf("which character that begin to copy:\n" );
scanf("%d",&m);
if (strlen(str1)<m)
{

printf("Input characters are not enough ,please input again!\n");
gets(str1);
}
else
{
copystr(str1,str2,m);
printf("result: %s\n",str2);


}
}
void copystr(char *p1,char *p2,int n)
{
while ( *p2++=*(p1+n-1)++);

}

搜索更多相关主题的帖子: char printf void string 
2007-06-25 22:46
SpaceC
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-6-20
得分:0 
while ( *p2++=*(p1+n-1)++);
改为
while ( *p2++ = *((p1++)+n-1));

因为 p1+n-1 是一个变量表达式,不能为左值,所以不能使用自增操作符

2007-06-26 09:34
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
得分:0 
谢谢,不过有possible incorrect assingnment ,
解释一下

方寸之内,剖天下; 方坛之内,析自我;
2007-06-26 18:40
Javal
Rank: 1
等 级:新手上路
威 望:1
帖 子:108
专家分:0
注 册:2006-5-7
得分:0 
谢谢,不过有possible incorrect assingnment ,
解释一下

有的编译器会试着检查语义错误,在大多数情况下,编译器会认为while()语句的表达式为逻辑判断,
因此它会提醒你在这里有可能是你把逻辑判断误写为赋值语句(==误写为=),所有有这样的提示信息

猝然临之而不惊,无故加之而不怒 /?spaced" target="_blank">Linux C资料
2007-06-26 23:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-150277-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.169218 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved