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(值不匹配)
答案 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)
我能想到的两种可能性:
orig
和p
的不同类型(签名?)。这可能导致比较和/或分配表现得“奇怪”。如果没有这些变量的声明,就很难说清楚。
多个线程同时访问/修改s[x]
,这可能会导致s[x]
在您分配给orig
和p
的两个作业之间发生变化。
修改强>:
正如对该问题的一个评论中所提到的,由于错误的分号(;
),条件是无操作。尝试删除它,看看问题是否仍然存在。