我有以下用于在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;
}
在主函数中有一段代码:
char buffer[5]; //which is filled correctly later
...
test(buffer, "WORD", 5);
当i = 0时,它立即返回0。如果我将函数更改为以下内容:
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;
}
...它的工作效果非常好。在函数测试的第一个版本中,调试器显示缓冲区和单词数组的类型为char*。在函数测试的第二个版本中,它显示缓冲区的类型为char*,而测试数组的类型为char[]。函数strcmp()也无法工作。
这里实际上出了什么问题?程序是为PIC微控制器设计的,编译器是C18,IDE是MPLAB。