首页 > 代码库 > 2.strcpy使用注意(2)
2.strcpy使用注意(2)
分析下述代码:
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); }
2.strcpy使用注意(2)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。