I have following function to compare two char arrays in C:
short test(char buffer[], char word[], int length) {
int i;
for(i = 0; i < length; i++) {
if(buffer[i] != word[i]) {
return 0;
}
}
return 1;
}
And somewhere in main:
char buffer[5]; //which is filled correctly later
...
test(buffer, "WORD", 5);
It returns 0 immediately at i = 0. If I change function to this:
short test(char buffer[], int length) {
int i;
char word[5] = "WORD";
for(i = 0; i < length; i++) {
if(buffer[i] != word[i]) {
return 0;
}
}
return 1;
}
... it works like a charm. In the first version of function test debugger says that buffer and word arrays are type of char*. In the second version of function test it says that the buffer is type of char* and the test array is type of char[]. Function strcmp() does not work neither.
What is actually wrong here? Program is made for PIC microcontroller, compiler is C18 and IDE is MPLAB.