C18 Microchip编译器和strcmp函数

标签 c string strcmp mplab-c18

我想比较两个字符串:

第一个字符串声明在我的 main 之上:

char _newState[] = "AVAILABLE";

当我想与一个 const 字符串进行比较时,我放了一行:

if(strcmppgm2ram((const char *) "AVAILABLE", _newState ) == 0){
    code:
}

该函数从不返回零,解决方案和正确的类型转换是什么? strcmp也是一样的问题!

最佳答案

看起来您的参数顺序错误。根据 C18 库手册,strcmppgm2ram 的签名是

signed char strcmppgm2ram(const char * str1, const rom char * str2 );

所以你的strng常量应该是第二个字符串,你的字符数组应该是第一个参数。

你不应该使用强制转换,因为他们所做的只是隐藏这样的问题。如果您有类型不匹配,那么您应该使用该信息来确定正确的类型应该是什么以及您是否犯了错误。使用强制转换就像告诉编译器忽略你所做的,即使编译器认为它应该是一个警告/错误。

关于C18 Microchip编译器和strcmp函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11102994/

相关文章:

c - Posix 正则表达式非贪婪

c - 为什么在 Ubuntu 中按方向键时终端显示 "^[[A" "^[[B" "^[[C" "^[[D"?

string - Python Pandas : How to replace string contain "?"

javascript - 如何知道一个字符串以 jQuery 中的特定字符串开始/结束?

c - 在使用 strcmp 针对两个可能值测试字符串的几种给定方法中,其中一种是显而易见的选择吗?

c - 这是两个字符串的字符串比较的正确说法吗?

c - 错误未定义对 'WinMain@16' 的引用

字符点到十六进制值

java - 写信给数字电话号码 Java

c++ - 2 我的 strcmp 函数测试失败