比较2个char变量

时间:2014-03-24 18:15:40

标签: c

int compare (char * s, char * pre) 
{ 
   int x = 0; 
   char p; 
   char orig; 
   while (pre[x] != '\0') 
   { 
      printf("%c", tolower(pre[x]) );
      printf("%c", tolower(s[x]) );
      orig = tolower(s[x]);
      p = tolower(s[x]);
      if (orig != p); 
      { 
         return 0;
      } 
      x++; 
   } 

   return 1;
}

预期回报:1(相同的值直到循环结束) 结果返回:0(值不匹配)

2 个答案:

答案 0 :(得分:1)

这是一个重言式:

orig = tolower(s[x]); p = tolower(s[x]); if( orig != p ) etc.

可能?应该是:

orig = tolower(s[x]); p = tolower(pre[x]); if( orig != p ) etc.

注意;已从if stmt。

中删除

答案 1 :(得分:0)

我能想到的两种可能性:

  • origp的不同类型(签名?)。这可能导致比较和/或分配表现得“奇怪”。如果没有这些变量的声明,就很难说清楚。

  • 多个线程同时访问/修改s[x],这可能会导致s[x]在您分配给origp的两个作业之间发生变化。

    < / LI>

修改

正如对该问题的一个评论中所提到的,由于错误的分号(;),条件是无操作。尝试删除它,看看问题是否仍然存在。