【发布时间】:2019-01-30 16:01:07
【问题描述】:
目前正在尝试修复一段时间未使用的代码。
我有两个变量:int8_t foo[size] 和 const char* const bar。
有一个 if 检查 if(0 != strcmp((char *)foo, bar))
目前,即使printf("%s | %s", foo, bar) 返回两个完全相同的字符串,这也是失败的。我也试过strncmp,但也失败了。
通过在线研究,我知道这很可能是由于终止了空字节,但是我不知道如何解决/解决这个问题。
int8_t foo[size];
const char* const bar;
if(0 != strcmp((char *)foo, bar)){
fail
}
预期结果是 strcmp 返回 0,因为打印时两个字符串相同。
实际结果:返回失败。
实际数据:5352A565712345657567565785658956581
运行printf("Value of foo and bar: %s and %s", foo, bar) 时,两个变量都会返回上面的数据。
【问题讨论】:
-
如果不知道这两个变量的确切数据是什么,我们就无法回答。
-
如果你想要(字符串)字符,使用
char。如果您想要小整数,请使用int8_t或uint8_t(或signed char或unsigned char)。 -
按要求添加数据。
-
不可打印的内容怎么办?你能确定没有吗?
标签: c pointers char strcmp strncmp