请看一段简单程序 关于(if(p)*p=0;)
//请教:
//其中 if(p)*p=0; 怎么理解?
//p 可作为逻辑表达式?
int ReadDat(void)
{
FILE *fp;
int i=0;
char *p;
if((fp=fopen( "IN.DAT ", "r "))==NULL) return 1;
while(fegts(xx[i],80,fp)!=NULL)
{
p=strchar(xx[i], '\n ');
if(p)*p=0;
i++;
}
maxline=i;
fclose(fp);
return 0;
}
[解决办法]
p 可作为逻辑表达式?
================
if(p)等价与if(p != NULL)
[解决办法]
strchr(不是strchar)返回的是指针(char *),即指向串中 "\n "的位置,
if (p) *p=0; 就是说将串中的第一个 "\n "替换为 "\0 "。
if(p) 的含义为:指针p不是空指针则条件成立,p为空置针则条件不成立。
if (exp) 中,exp 不一定非得是严格的逻辑表达式,编译器将隐式地转换为逻辑表达式,
比如上面的 if (p) 其实就是 if (p != NULL)。
[解决办法]
if(可以是变量)
如果是指针的话 意思是 if(p != NULL)
如果是int类型 if(a) 则 a> 0为真
[解决办法]
to: luya123()
如果是int类型 if(a) 则 a> 0为真
不对,应该是 if(a) 相当于 if( a != 0 )
[解决办法]
逻辑有错误,应该是:
if(p)
{ *p=0;
i++;
}
[解决办法]
(if(p)*p=0;)
if(p) 等价于 if(p=!0)
对于指针,也等价于if(p=!NULL)
[解决办法]
while(fegts(xx[i],80,fp)!=NULL)
{
p=strchar(xx[i], '\n ');
if(p)*p=0;
i++;
}
strchar 是自定义的函数么?
似乎这样可能也是对的 ~
看楼主自己需要什么样的结果吧~