C语言小代码,求注解
发布网友
发布时间:2022-04-26 16:20
我来回答
共1个回答
热心网友
时间:2023-10-14 03:44
#include <stdio.h> //加载头文件
//定义主函数
int main()
{//方法体
//定义母串str, 子串sub, 并定义指针p指向str首地址, 指针psub指向sub首地址
char str[100]="abcdefgh",sub[100],*p=str,*psub=sub;
//定义n,m分别为起始位置和子串长度
int n=3,m=5;
//循环部分
//第一步:p=str+n-1, 循环开始时指针p被赋值为母串的第n个字符的地址,因为第一个字符为str(+0),所以第n个字符为str(+n-1)
//第二步:p<str+m+n-1, 判断指针p指向的地址是否小于母串str第m+n个字符的地址
//因为起始位置为n, 长度为m, 所以子串的最后一个字符是母串的第m+n-1个字符, 其地址为str+m+n-2, 原理同p指针赋初值
//第三步:*psub=*p, *(char *)为取字符指针指向地址的值, 这句语句的效果就是将指针p指向地址的值赋值给psub指针所指的地址的值
//第四步:p++,psub++ 累加后跳转到第二步
for(p=str+n-1;p<str+m+n-1;p++,psub++)
*psub=*p;
//循环结束时psub指向子串最后一个字符后的一个地址, 赋值'\0'是为字符串添加结束标记
//否则输出子串时,会将读取后面的值并输出(未赋值的乱码), 如:"cdefg237~$%*GUgfw7f9^%FDT..."
*psub='\0';
//输出子串sub
puts(sub);
//结束主函数, 返回0
return 0;
}