c语言中取子串函数有哪些 c语言提取子串

C程序编写一个字符串求子串(急)#include stdio.h
#include stdlib.h
char *substr(const char *s,int n1,int n2)/*从s中提取下标为n1~n2的字符组成一个新字符串,然后返回这个新串的首地址*/
{
char *sp;
sp=(char *)malloc(sizeof(char)*(n2-n1+2));
int i,j=0;
for (i=n1; i=n2; i++) {
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;
}
一个简单的方法!
c语言求一个字符串里有几个子串#include
#include
int substring(char *str,char *str1);//函数原型
int main(void)
{
char str[64]={0};
char str1[16]={0};
int i,j,x;
printf("please put the string\n");
gets(str);//输入c语言中取子串函数有哪些的原字符串
puts(str);
printf("\n");
printf("please put the string1 \n");
gets(str1);//输入的字符串中的子串
puts(str1);
printf("\n");
i=strlen(str);//原字符串长度
j=strlen(str1);//子串长度
printf("the string lenth is %d\n",i);
printf("the string lenth is %d\n",j);
x=substring(str,str1);
printf("then anwser is %d\n",x);
return 0;
}
int substring(char *str,char *str1)
{
int x=0;
char *p;//任意附个初始值
do{
p=strstr(str,str1);//1.p指针指向strstr的返回值 。3.再一次循环到 这里函数的参数发生变化c语言中取子串函数有哪些,p重新指向strstr返回值,如此循环 。
if(p != NULL) {
str=p+1;//2.str同样指向strstr返回值p的下一个地址 。
x=x+1;
}
}while(p!=NULL);
return x;
}
另一种方法,不用库函数来实现 , 来自c语言中取子串函数有哪些他人 。。。
int substring1(char *str,char * str1,int n,int m)
{
int i,j=0,k;
int x=0;
for(i=0;i=n-m;i++) {
k = i;
while (1) {
if (str[k] != str1[j] ) {
j=0;
break;
} else if (str1[j+1] == '\0') {
x++;
j=0;
break;
} else {
k++;
j++;
}
}
}
return x;
}
C语言如何实现取字符串的一部分?例子如下:
直接编译,程序输出结果中任意输入字符串和数字 , 程序执行结果如下图所示:
扩展资料:
字符串或串(String)是由数字、字母、下划线组成的一串字符 。一般记为 s=“a1a2···an”(n=0) 。它是编程语言中表示文本的数据类型 。在程序设计中 , 字符串(string)为符号或数值的一个连续序列 , 如符号串(一串字符)或二进制数字串(一串二进制数字) 。
通常以串的整体作为操作对象 , 如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等 。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等 。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配 。串的两种最基本的存储方式是顺序存储方式和链接存储方式 。
数组中提取元素(C语言)【c语言中取子串函数有哪些 c语言提取子串】#include "stdio.h"
void fun(char s1[],char s2[],int m,int n)
{
int i=0,j=0;
while(s2[i]) i++;//得到s2的长度,也可以用i=strlen(s2);
if(im) return;//防止出现m超过s2长度的情况
for(i=m-1;im+n-1s2[i];i++,j++)
{
s1[j]=s2[i];
}
s1[j]=0;
}
void main()

推荐阅读