输入截取字符串位置,长度,并输出截取的字符串
话不多少,先上代码
void subStr(char str[],char sub[],int pos,int len);//截取算法
int main() //程序入口,主函数,从这里开始执行
{
int pos,len;//定义位置长度
char str[]={"abcadasda"};
char sub[20];
printf("请输入截取的位置:");
scanf("%d",&pos);
printf("请输入截取的长度:");
scanf("%d",&len);
subStr(str,sub,pos,len);//调用函数
}
void subStr(char str[],char sub[],int pos,int len)//截取算法
{
int i;
int count = 0;//sub下标初始值
int lenght=strlen(str);//求str有效长度
if(pos<1||pos>lenght||len<1||len>(lenght-pos+1))//截取位置不能<1||不能大于字符总长度||截取长度不能<1||不能大于总长度-截取位置+1
{
printf("截取有误\n");
}
else
{
for(i=pos-1;i<pos+len-1;i++)
{
sub[count++]=str[i];
}
}
sub[count]='\0';
printf("sub内的字符串为%s",sub);
}
解题思路
- 截取位置不能<1||不能大于字符总长度||截取长度不能<1||不能大于总长度-截取位置+1
if(pos<1||pos>lenght||len<1||len>(lenght-pos+1))
{
printf("截取有误\n");
}
- 先从截取位置的下标开始,小于截取位置+截取长度-1
else
{
for(i=pos-1;i<pos+len-1;i++)
{
sub[count++]=str[i];
}
}
3.最后赋值到sun字符串数组后加‘\0’,更严谨
sub[count]='\0';
- 运行结果
嘿嘿,开始动手吧!