
c语言——用指针解决字符串问题——输出一个字符串的子串
题目描述设计函数功能是输出一个字符串的子串,函数声明:voidsubString(char*p,intstart,intlen),start表示子串开始字符序号(从0计数...
题目描述
设计函数功能是输出一个字符串的子串,函数声明:void subString(char *p, int start, int len),start表示子串开始字符序号(从0计数),len表示所取子串的长度。
使用这个函数完成输出一个字符串的子串。
输入样例:
qwertyuiop
3 4
输出样例:
rtyu 展开
设计函数功能是输出一个字符串的子串,函数声明:void subString(char *p, int start, int len),start表示子串开始字符序号(从0计数),len表示所取子串的长度。
使用这个函数完成输出一个字符串的子串。
输入样例:
qwertyuiop
3 4
输出样例:
rtyu 展开
2个回答
展开全部
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
void subString(char *p, int start, int len);
void substring(char *p,int start, int len)
{
int i;
printf("取出的子串是:");
for(i = start; i < start + len; i++ )
printf("%c",*( p + i));
printf("\n");
}
int main()
{
int n, i = 0,start,len;
printf("请输入字符的个数:n,起始位:start,子串长度:n\n");
scanf("%d%d%d",&n,&start,&len);
printf("n = %d, start = %d, len = %d\n",n,start,len);
printf("请输入字符串:");
char *pstr = (char *)malloc(sizeof(char)*(n + 1));
if( NULL == pstr)
{
printf("内存分配失败\b");
exit(-1);
}
else
{
for( i = 0; i <= n; i++ )
*(pstr + i) = getchar();
*(pstr + i) = '\0';
}
printf("\n");
if(start > n || len > n)
printf("输入参数不合适\n");
else
{
substring(pstr,start,len);
}
return 0;
}
追问
不是分两次输入,是一次
追答
那也很简单
展开全部
void subString(char *p, int start, int len)
{
char *q=p+start;
q[len]='\0';
printf("%s\n",q);
}
追问
整个程序,劳烦
追答
#include<stdio.h>
#include<string.h>
void subString(char *p, int start, int len)
{
char ch,*q=p+start;
if(start+len<strlen(p))
{//考虑到参数len大于原字符串长度
ch=q[len];
q[len]='\0';//字符串的结束标志
}
printf("字符串的子串是:%s\n",q);
q[len]=ch;//还原原字符串中的字符
}
int main()
{
char s[50];
int start,len;
printf("请输入一个字符串:\n");
scanf("%s",s);
printf("输入开始位置start和截取长度len:");
scanf("%d%d",&start,&len);
subString(s,start,len);
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询