2.strcpy使用注意(2)
2024-10-18 01:07:31
分析下述代码:
void test2() {
char string[10],str1[10];
int i;
for(i=0;i<10;i++) {
srtr1='a';
}
strcpy(string,str1);
}
代码不能通过编译。str1为char *const类型的右值类型,根本不能赋值。若想对数组的第一个元素赋值,需要使用*str=‘a’;对字符数组赋值后,使用库函数strcpy进行拷贝操作,strcpy会从源地址一直往后拷贝,直到遇到‘\0’为止。所以拷贝长度是不定的。如果一直没有遇到‘\0’导致越界访问非法内存,程序就崩了。
代码修改如下:
void test2() {
char string[10],str1[10];
int i;
for(i=0;i<9;i++) {
srtr1[i]='a';
}
str1[9]='\0'
strcpy(string,str1);
}
最新文章
- 快刀斩乱麻之 Katana
- LeetCode - 49. Group Anagrams
- 常用的DC插头公头的尺寸
- Spreadsheet Tracking
- Python3 内建模块 datetime/collections/base64/struct
- POJ1699Best Sequence(DFS)
- 代码演示C#中string和StingBuilder内存中的区别
- GoF——组合模式
- markdown 自己搞一个浏览工具
- 第19章 网络通信----TCP程序设计基础
- XCode 8.3 Automatically manage signing 问题
- hdu 4717 Tree2cycle(树形DP)
- 深入剖析Tomcat类加载机制
- bzoj 2998 第k小字串
- PHP入门1
- github上fork别人的代码之后,如何保持和原作者同步的更新
- C#细说多线程(下)
- 索引原理-btree索引与hash索引的区别
- jmeter beanShell 修改http请求参数
- Java NIO.2 使用Files类遍历文件夹