c语言求子串函数 c语言求子串位置

C语言求子串#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(pos0||poss-len||len1||lens-len-pos)
{
sub-len=0;
return(10);
}
else
{
for(i=0;ilen;i++)
{
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(pos0||poss-len||len1||lens-len-pos)
{
sub-len=0;
return(0);
}
else
{
for(i=0;ilen;i++)
{
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函数的逻辑错误就自己改吧
自己写的C语言求子串函数求解答#includestdio.h
#includestdlib.h
typedef struct hstring
{
char * ch;
int length;
} string;
void substring(string * str1,string str2,int i,int n)
{
if(n0 || nstr2.length-i+1 || i1 || istr2.length)
printf("fail!");
if(str1-ch) free(str1-ch);
if(!n) {/* c语言求子串函数我的书里有这部分c语言求子串函数,你的没有c语言求子串函数? */
str1-ch = NULL;
str1-length = 0;
} else {
str1-ch=(char*)malloc(n*sizeof(char));
int j;
for(j=0; jn; ++j,++i) {
str1-ch[j]=str2.ch[i-1];
}
str1-length=str2.length;
}
}
int main()
{
string str1;/* str1 的空间是动态分配的 */
string str2 = { /* 目标串 str2 的空间是 已经分配好的 */
"mnpqrxyz",
8
};
/*
string str1,str2;
char s1[5]="abcd";
str1.ch=s1;
str1.length=4;
char s2[5]="mmmm";
str2.ch=s2;
str2.length=4;
*/
substring(str1,str2,1,3);
printf("%s",str1.ch);
return 0;
}
(C语言)帮忙编写求子串函数substr(s,n1,n2)void substr(char s[],int n1,int n2)
{int i;br/char t[20]={\0};
for(i=n1;i=n1+n2;i++)
t=strcat(t,s[i]);
puts(t);
}
这个函数要用到
#includestdio.h
#includestring.h
c语言中 编程实现求子串函数#include stdio.h
#include stdlib.h
char *substr(const char *s,int n1,int n2)/*从s中提取下标为n1~n2的字符组成一个新字符串 , 然后返回这个新串的首地址*/

推荐阅读