#include <stdlib.h>
char *substr(const char *s,int n1,int n2)/*从s中提取下标为n1~n2的字符组成一个新字符串,然后返回这个新串的首地址*/
{
char *sp=malloc(sizeof(char)*(n2-n1+2))
int i,j=0
for (i=n1i<=n2i++) {
sp[j++]=s[i]
}
sp[j]=0
return sp
}
int main(void)
{
char s[80],*sub
scanf("%s",s)/*输入原字符串s*/
sub=substr(s,0,5)/*提取s[0]~s[5]元素组成新子串,并保存到sub中*/
printf("substr:%s\n",sub)/*输出sub*/
free(sub)/*释放sub所占用的空间*/
return 0
}
#include <stdio.h>#include <stdlib.h>
#include <string.h>
char *sub(char *s,int st,int len)
{char *s1
int i
s1=(char*)malloc(len)
for(i=0i<leni++)s1[i]=s[st+i-1]
s1[i]='\0'
return s1
}
int main()
{int n,i,j
char s[200]
scanf("%d%*c",&n)
while(n--)
{printf("input a string:")
gets(s)
printf("i=")
scanf("%d",&i)
printf("j=")
scanf("%d%*c",&j)
if(i+j>strlen(s))printf("Error\n")
else printf("%s\n",sub(s,i,j))
}
return 0
}
#include <stdio.h>#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
#define MAXLEN 40
typedef struct
{
char ch[MAXLEN]
int len
} SString
int StrLength(SString s)
{
return(s.len)
}
int SubString(SString *sub,SString *s,int pos,int len)
{
int i
if(pos<0||pos>s->len||len<1||len>s->len-pos)
{
sub->len=0
return(10)
}
else
{
for(i=0i<leni++)
{
sub->ch[i]=s->ch[i+pos]
}
sub->len=len
return(1)
}
}
void main()
{
SString s, sub
char buffer[128]
scanf("请输入一串字符串:%c",&s.ch)/*1.请使用%S,2.请使用s.ch*/
strcpy(s.ch, "opqrst")/*为什么又把它覆盖掉*/
StrLength(SString)/*这句话什么意思,返回值为什么又被忽略,去掉就没有语法错误,逻辑错误多*/
printf("你输入的字符串长度为:%d\n",s.len)/*s.len未初始化*/
printf("主串为:opqrst\n",s.ch)/*这句话什么意思*/
s.len = 6
SubString(&sub, &s, 3, 3)
memcpy(buffer, sub.ch, sub.len)
buffer[sub.len] = 10
printf("子串为: %s\n",buffer)
}
===========================================
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
#define MAXLEN 40
typedef struct
{
char ch[MAXLEN]
int len
} SString
int SubString(SString *sub,SString *s,int pos,int len)
{
int i
if(pos<0||pos>s->len||len<1||len>s->len-pos)
{
sub->len=0
return(0)
}
else
{
for(i=0i<leni++)
{
sub->ch[i]=s->ch[i+pos]
}
sub->len=len
return(1)
}
}
void main()
{
SString s,sub
char buffer[128]
clrscr()
scanf("%s",s.ch)
s.len=strlen(s.ch)
printf("你输入的字符串长度为%d\n",s.len)
printf("主串为%s\n",s.ch)
SubString(&sub,&s,3,3)/*后两个参数改成要求输入*/
/*memcpy(buffer,sub.ch,sub.len)*/
printf("子串为%s\n",sub.ch)
getch()
}
SubString函数的逻辑错误就自己改吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)