我定义了一个如下数组
const   char *limit[]={"(", ")", "[", "]", ",".","!",",",";","{","}","#","_","'"};/*限界符*/在文件中一个一个字符读出来再与上面的比较,若在其中返回1不在其中返回0,
从文件中读取 的字符保存在sign[0]中,其有一个sin[1]='\0'是用于防止输出越界的
在一个函数中这样比较int i=0;
while(limit[i])
if(strcmp(str,limit[i++])==0)return 1;
return 0;
但为什么老是返加1呢,比如我读了个“+”号,居然也返回1,我晕!

解决方案 »

  1.   

    str是什么类型?你是比较字符还是字符串?比较字符串的话,str第二个元素如果不是'\0'肯定会执行return 1的。比较字符的话
    const char limit[]={'(', ')', '[', ']', '.', '!', ',', ';', '{', '}', '#', '_', '\''};str类型改为char(strcmp(str,limit[i++])==0)改为(str==limit[i++])
      

  2.   

    看错了,你遇到的是一直相等,我以为是不相等了-_-b应该是while(limit[i])这里有问题,limit[i]可能会访问越界,越界的话,limit[i]未必是NULL,这样就可能出现问题了。