里面的a[20]{'a','b','c','d'}为啥是20啊,是随便定的为了满足数组空间需求还是有别的道理,还有那个strcpy函数是怎么用的啊,看不懂啊
计算机二级c语言题,有没有人帮忙解释一下
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 吴小凹 2022-02-08 17:07关注
答:随便定的,满足最长的数据即可,strcpy有两个参数,第一个是目标地址,第二个就是数据,将数据放到目标地址,其中数据为q={'a','b','c','\0'}, 目标地址为p={'a','b','c','d','a','b','c','d','e','\0'},拷贝地址在原基础上加上了3,所以目标地址就覆盖了d后面的数据,拷贝过后结果是p={'a','b','c','a','b','c','\0''d','e'},字符串结尾为'\0',此时当计算函数到'\0'时就会结束计数。
#include <stdio.h> //方便理解简单的写出库函数内部实现简单方法 //计算长度 int strlen_test(char* base) { int i; for(i=0;base[i]!='\0';i++);//找到结束标志,计算出长度 return i; } //拷贝 void strcpy_test(char* base,char* data) { int i=strlen_test(data),j;//计算出数据长度 for(j=0;j<i;j++)//循环拷贝 { base[j]=data[j]; } base[j]='\0'; } //字符拼接 void strcar_test(char* base,char* data) { //i,数据长度,k初始数据长度 int i=strlen_test(data),j,k=strlen_test(base); for(j=0;j<i;j++)//循环拷贝 { base[k+j]=data[j]; } base[k+j]='\0'; } int main(void) { char p[20]={},q[]="abc",r[]="abcde"; strcar_test(p,r); strcpy_test(p+strlen_test(q),q); printf("%d\n",strlen_test(p)); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥100 set_link_state
- ¥15 虚幻5 UE美术毛发渲染
- ¥15 CVRP 图论 物流运输优化
- ¥15 Tableau online 嵌入ppt失败
- ¥100 支付宝网页转账系统不识别账号
- ¥15 基于单片机的靶位控制系统
- ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度