周梦康 发表于 2015-12-10 2941 次浏览

我在学习鸟哥的 yar 代码的时候发现,字符串b\0标志着一个字符串的结束,后面的会被舍去,而且不算在b字符串长度之中。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

int main(int argc, char const *argv[])
{
	char *a = "json";
    char *b = "json\0a";
    printf("%d\n", strlen(b));
    if (strncasecmp(a,b,strlen(b)) == 0)
    {
    	printf("1\n");
    }
	return 0;
}
[root@localhost unix]# ./a.out 
4
1

而同样的代码我在用 Java 实现 yar 客户端的时候发现,不一样

byte[] packager = new byte[8];
packager[0] = 'j';
packager[1] = 's';
packager[2] = 'o';
packager[3] = 'n';
String packagerName = new String(packager);
System.out.println(packagerName);
System.out.println(packagerName.length());

if (packagerName.equals("json")){
    System.out.println(1);
}else{
    System.out.println(2);
}

输出结果

json
8
2


评论列表