我找不到类似的答案。
char buffer[] = {'a', '0'};
char p2[] = "a";
printf("%d", buffer==p2); // prints 0
我如何进行比较? 这是一个类似的问题吗?我如何将字符串文字与字符数组进行比较。
char buffer[] = {'a', '0'};
printf("%d", buffer=="a"); // prints 0
以上只是例子,但我真的需要这个:
char buffer[] = {'e','a','b','g','e','l','e','g','o','n','\000','p','k','n','m','l','\000','j', 'i', 'h'};
printf("%d", buffer=="eabgelegon\000pknml\000jih");
我无法使用任何其他功能。
最佳答案
在许多情况下,数组(或字符串)被转换为其第一个元素的地址。
在您的代码中,在 printf()
中,正在比较这些地址。
比较你需要的地址指向的东西strcmp()
(对于真正的字符串)或 memcmp()
(对于二进制数据)
char buffer[] = {'e','a','b','g','e','l','e','g','o','n','\000','p','k','n','m','l','\000','j', 'i', 'h'};
int equal1 = memcmp(buffer, "eabgelegon\000pknml\000jih", 20);
printf("%d", equal1);
int equal2 = memcmp(buffer, "eabgelegon\000XXXXXXXXX", 20);
printf("%d", equal2);
int equal3 = strcmp(buffer, "eabgelegon\000pknml\000jih");
printf("%d", equal3);
int equal4 = strcmp(buffer, "eabgelegon\000XXXXXXXXX");
printf("%d", equal4);
关于比较字符串文字与字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25528380/