C字符串末尾的'\0'问题
C语言的字符串要注意最后一位默认是'/0'的问题。这是一个易错点。
strlen()计算长度时不考虑末尾的'\0'
//例1
void test1()
{
char string[];
char* str1 = "";
strcpy( string, str1 );
}
void test2()
{
char string[], str1[];
int i;
for(i=; i<; i++)
{
str1[i] = 'a';
}
str1[] = '\0';//体现水平的一步
strcpy( string, str1 );
}
有的时候可能非常容易忽略这个小问题:
//例2
void test3(char* str1)
{
if(str1 == NULL){
return ;
}
char string[];
if( strlen( str1 ) <= )
{
strcpy( string, str1 );
}
}
这里if( strlen( str1 ) <= 10 )应该写成if( strlen( str1 ) < 10 ),因为strlen的结果未统计’\0’所占用的1个字节。
C字符串末尾的'\0'问题的更多相关文章
- sql server2005版本中,len函数计算了字符串末尾的空格
sql server2005版本中,len函数计算了字符串末尾的空格的长度,以下是测试脚本: print @@version declare @v varchar(max) set @v = 'hp, ...
- NYOJ1026 阶乘末尾非0 【模板】
阶乘末尾非0 时间限制:2000 ms | 内存限制:65535 KB 难度:3 描写叙述 我们的问题非常是简单.n! 末尾非0数是几? 比方n=5的时候,n! =120,那么n!末尾非0数是2. ...
- 求N!末尾的0的个数(找规律+递归)
0\'s Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描写叙述 计算整数n!(n的阶乘)末尾有多少个0. 输入 第一行输入一个数T代 ...
- PHP导出Excel 数字末尾变0或小数点解决办法
为了管理方便,查阅直观性.很多网站, 或者系统都会自带导出excel或者cvs的功能.但是很多情况下,由于数字超过15位,会被显示成0或者加小数点处理.造成这种情况是由于Excel内 置的数值有效范围 ...
- java去除字符串后面的\0
java去除字符串后面的\0 private String filterCode(String string) { if (string != null) { string = string.trim ...
- 五、excel末尾补0和开头补0
1.末尾补0 假设数据在A列,则在B1输入以下公式 如果长度不足10,在后面加0,否则等于A1 (1)=IF(LEN(A1<17),LEFT(A1&"0000000000&qu ...
- c语言中strcpy与strlen函数对字符串最后的'\0'的处理
对于strcpy来说,它会把字符串最后的‘\0’一起拷贝 对于strlen来说,它计算字符串长度的时候不会把最后的‘\0’计算进去
- Shell脚本中字符串判空:使用-z 字符串长度为0时,为真,-n字符串长度不为0,为真。这两个都不靠谱【转】
最近发现使用 -z 和 -n 来判断字符串判空,或不空时,很不靠谱. 使用下面的方法最可靠: if [ "x${value}" == "x" ] ...
- Light oj 1138 - Trailing Zeroes (III) 【二分查找 && N!中末尾连续0的个数】
1138 - Trailing Zeroes (III) problem=1138"> problem=1138&language=english&type=pdf&q ...
随机推荐
- .NET实现爬虫
前几天看到一个.NET Core写成的爬虫,有些莫名的小兴奋,之前一直用集搜客去爬拉勾网的招聘信息,这个傻瓜化工具相当于用HTML模板页去标记DOM节点,然后在浏览器窗口上模拟人的浏览行为同时跟踪节点 ...
- JAVA实现KNN分类
转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/51064307 http://www.llwjy.com/blogdetail/f ...
- Python中optparse模块使用浅析
转载:http://www.jb51.net/article/59296.htm 最近遇到一个问题,是指定参数来运行某个特定的进程,这很类似Linux中一些命令的参数了,比如ls -a,为什么加上-a ...
- caffe2--------ImportError: No module named past.builtins
whale@sea:~/anaconda2/lib/python2.7/site-packages$ python Python 2.7.14 |Anaconda custom (64-bit)| ( ...
- C# 杀掉后台进程
var p = Process.GetProcessesByName("WINWORD"); if (p.Any()) { for (int i = 0; i < p.Len ...
- Linux命令apt-get apt的常见用法
高级包装工具(英语:Advanced Packaging Tools,缩写为APT) apt-cache search foo //搜索和"foo"匹配的包. apt-cache ...
- openssl源码安装
下载最新的OpenSSL http://openssl.org/source/ ./config make make install 通过命令openssl version或者openssl ...
- Kali安装OCI8 for metasploit Oracle login
ps:安装了好久,最好才发现很简单,步骤记录下吧 遇到oracle爆破登录的时候OCI8报错,如下图 安装oracle 前面关于oracle client的安装就看官方文档吧 http://dev.m ...
- C#之stream
在C#中经常要用stream stream下面主要有 FileStream:使用文件作为后备设备. BufferedStream:使用缓冲区作为后备设备,用来增强性能的中间存储. MemoryStre ...
- node / npm/ yarn 的安装以及环境变量
# node.js 10.15.3 https://npm.taobao.org/mirrors/node/v10.15.3/node-v10.15.3-x64.msi 1.安装后自动添加了环境变量: ...