从char中删除转义字符

时间:2011-02-15 11:35:33

标签: c++ c

我已经使用了这个约2天了。我被困了,有一个相当简单的烦恼,但我无法解决它。

我的程序基本上从PHP脚本接收TCP连接。发送的消息存储在char buffer[1024];中。 好的,这个缓冲区变量包含一个唯一键,与一个char key[1024] = "supersecretkey123";

进行比较

问题本身就是这两者不相等 - 无论我做什么。 我一直在将缓冲区和键变量打印在彼此之上,看起来它们是100%相同的。但是我的均衡测试仍然失败。

if(key == buffer) { // do some thing here etc }

然后我开始在互联网上搜索可能出错的一些信息。我后来意识到这可能是一些令我讨厌的逃脱角色。但我无法打印它们,删除它们甚至确保它们在那里。所以这就是为什么我被困 - 当缓冲变量与关键变量匹配时,如何使这些相等的想法。 除非手动修改密钥的声明,否则密钥不可能。程序本身正在接收信息并“正确”发回信息。

感谢。

3 个答案:

答案 0 :(得分:5)

如果您使用的是空终止字符串,请使用正确的api - strcmp及其变体。

此外,不需要声明char key[1024] = "supersecretkey123";中的大小 - 编译器将减少它或堆栈/堆内存将被浪费。

答案 1 :(得分:1)

尝试使用if(!strncmp(key,buffer,1024))。请参阅strncmp上的this reference

答案 2 :(得分:1)

如果您使用的是C ++,请使用std::string代替char []。您无法比较两个char []的尝试方式(它们是指向内存的指针),但可以使用std::string

如果在您的情况下以某种方式强制使用char[],请使用strcmp