我有以下代码:
char* id = someFunction();
if (id == "0x01") {
id = ....
}
所以,我基本上需要的 - 检查,如果在id
变量中我有字符串值“0x01”,如果是,那么传递{0x01, 0x00}
系统符号而不是它
感谢您的帮助。
答案 0 :(得分:4)
使用strcmp()
。
此功能在string.h
Example:
printf( "Enter your name: " );
scanf( "%s", name );
if( strcmp( name, "Mary" ) == 0 )
printf( "Hello, Dr. Mary!\n" );
答案 1 :(得分:4)
如果这是C ++,请使用std::string
。否则,请使用strcmp
进行比较。
C / C ++不是一种语言。除非他们真的有必要,否则请停止使用这两个标签。
答案 2 :(得分:3)
开始使用std::string
,你就可以解决这些问题了:
std::string id = someFunction();
if (id == "0x01") {
id = "0x00";
}
答案 3 :(得分:1)
您需要使用strcmp
。或者更安全的对应strncmp
。
这样的事情:
if (!strncmp(id, "0x01", 10)) {
// they're equal!
}
答案 4 :(得分:1)
您无法将字符串与==
进行比较。
根据您的操作系统等,您可以使用std::string
或C strcmp()
功能
DavidRF评论您可以将字符串与==
进行比较,并且他是100%正确的。
printf("%s\n", ((char *)"hello" == (char *)"hello") ? "yes" : "no")
使用==
比较指针。如果指针相等,那么你知道字符串是相等的。您可以使用它来短路整个字符串比较(尽管它试图比编译器更聪明 - 一个好的strcmp
已经有了这个检查)。如果指针不相等,那么你对它们指向的字符串一无所知(它们仍然可以相等)。
上面的特定printf
示例非常糟糕:我最近没有阅读过C标准,但如果内存服务正确,则将文字放入表中是编译器特定的行为。更糟糕的是,我敢打赌它取决于编译器选项(优化级别等)。该行可能在调试模式下工作,然后在发布模式下给出不同的结果 - 这永远不会好。
答案 5 :(得分:0)
您需要使用strcmp()
函数来比较字符串:
if (strcmp(id,"0x01") ==0) {
// match found.
答案 6 :(得分:0)
如果这是C,你需要strcmp功能:
if (!strcmp(id, "0x01")) {
// Do the id == "0x01" code
}
else {
// Do the id != "0x01" code
}
strcmp()
返回一个整数值,表示字符串之间的关系: