我有以下函数来比较 C 中的两个 char 数组:
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。