虽然编写了非常简单的程序来清除空白,制表符,换行符,但遇到了一些我实际上并未首先捕获的东西;即使如果条件为真,只有当选项卡,空格或换行不存在,但它仍然与所提到的由于某种原因,执行..这里是代码C歧义问题
#include <cstdio>#include <cstring>
#include <stdio.h>
#include <string.h>
#define LGT 100
void rem(char s[])
{
int i;
for(i=(strlen(s)-1);i>=0;i--)
if(s[i]!=' ' || s[i]!='\t' || s[i]!='\n')
break;
s[i+1]='\0';
}
int main(void)
{
char v[LGT]={"sdsfg\t"};
rem(v);
printf("%s\n",v);
getchar();
}
这`=`和``||是一个标准的逻辑问题。你应该在纸上写下几个案例,并慢慢仔细地评估它们。 – 2011-01-27 20:14:31
这不是有效的C,只是很差的C++。这是什么? – GManNickG 2011-01-27 20:38:16
@GMan:毕竟它应该是C ...... – Christoph 2011-01-27 21:30:25