Вы пытаетесь изменить статическую строку с помощью *s1 = *(s1+1);
, и ваша программа вылетает . Попробуйте вместо этого:
int main() {
int compa=1;
/* Allocated memory can be modified without adverse effects! */
char s1[64];
char s2[64];
strcpy(s1, "abc f");
strcpy(s2, "abcf");
compa = comps(s1, s2);
printf("%d", compa); //return the 4202692
if (compa == 1) {
printf("Two string are equal");
} else {
printf("Two string are not equal");
}
getchar();
return 0;
}
Также, как упомянул Сурав, comps
не содержит операторов возврата. Компиляция дает:
1>c:\code\test\test.cpp(83): warning C4715: 'comps' : not all control paths return a value
И compa
будет иметь неопределенное значение, назначенное ему, как только вы назначите ему (неопределенное) возвращаемое значение comps
.