c语言中char p20=ppppq=qqqqr=rrrrr;strcatpr;strcpyp+strlenqq;printfdnstrlenp;的结果为?逐条解释程序功能并说出执行每一步时这三个字符串的字符个数和占用空间数用strlen函数把字符串数组复制到字符数组会把最后的0也复制过去吗?strcpyp+strlenqq;这一步的p+strlenq是什么意思?
程序功能:
- 将字符串r追加到字符串p的末尾
- 将字符串q复制到字符串p的后半部分
- 输出字符串p的长度
逐条解释程序功能并说出执行每一步时这三个字符串的字符个数和占用空间数:
char p[20]={'p','p','p','p'}:声明并初始化一个字符数组p,长度为20,初始值为{'p','p','p','p'}。p中字符个数为4,占用空间数为20。q[]="qqqq":声明并初始化一个字符数组q,长度根据初始化的字符串确定为5。q中字符个数为4,占用空间数为5。r[]="rrrrr":声明并初始化一个字符数组r,长度根据初始化的字符串确定为6。r中字符个数为5,占用空间数为6。strcat(p,r):将字符串r追加到字符串p的末尾。此时p为"pppprrrrr",字符个数为9,占用空间数为20。strcpy(p+strlen(q),q):将字符串q复制到字符串p的后半部分。p的长度为9,q的长度为4,所以从p的第5个位置开始复制q,复制后的p为"pppprqqq",字符个数为9,占用空间数为20。printf("%d\n",strlen(p)):输出字符串p的长度,即9。
用strlen函数把字符串数组复制到字符数组会把最后的'\0'也复制过去吗? 不会,strlen函数只计算字符串的字符个数,不包括最后的'\0'。
strcpy(p+strlen(q),q)这一步的p+strlen(q)是什么意思? p+strlen(q)表示从p的第strlen(q)个位置开始的地址,即从p的第5个位置开始复制字符串q。
原文地址: https://www.cveoy.top/t/topic/jgd6 著作权归作者所有。请勿转载和采集!