当前位置: 技术问答>linux和unix
linux里字符串开头为空字符是什么意思
来源: 互联网 发布时间:2017-02-26
本文导语: 看linux的代码时,看到类似于这样一行“ #define Name "test-control" 后面就将这个Name作为一个socket的名字,并且有进行字符串拷贝:memcy(NewBuf,Name,len); 我有2个问题: 1,"test-control" 这么一个字符串,如果不把开...
看linux的代码时,看到类似于这样一行“
#define Name "test-control"
后面就将这个Name作为一个socket的名字,并且有进行字符串拷贝:memcy(NewBuf,Name,len);
我有2个问题:
1,"test-control" 这么一个字符串,如果不把开头的0去掉,后续代码处理不是会与问题?
2, 用memcy(NewBuf,Name,len);应该达不到拷贝字符串的效果吧
总之就是定义字符串时,第一字符为0,是有什么特别的用法么?
#define Name "test-control"
后面就将这个Name作为一个socket的名字,并且有进行字符串拷贝:memcy(NewBuf,Name,len);
我有2个问题:
1,"test-control" 这么一个字符串,如果不把开头的0去掉,后续代码处理不是会与问题?
2, 用memcy(NewBuf,Name,len);应该达不到拷贝字符串的效果吧
总之就是定义字符串时,第一字符为0,是有什么特别的用法么?
|
1、要看后续代码是怎么处理的
2、memcpy 是指定长度拷贝的,不关心字符串的表示
2、memcpy 是指定长度拷贝的,不关心字符串的表示
|
个人认为应该是一种编码的技巧吧,要看实际的场景了。
|
1,如果不把开头的0去掉,那Name就相当于""
2, 用memcy(NewBuf,Name,len)==>会按len长度来copy,不管Name中是什么!
2, 用memcy(NewBuf,Name,len)==>会按len长度来copy,不管Name中是什么!
|
可以拷贝,只不过之后都不会被打印, 字符串长度为0.