char* search(char* str, char ch)
創(chuàng)新互聯(lián)公司主營農(nóng)安網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,農(nóng)安h5微信平臺小程序開發(fā)搭建,農(nóng)安網(wǎng)站營銷推廣歡迎農(nóng)安等地區(qū)企業(yè)咨詢
{
char *pmax, *p, *p1;
int max;
pmax = NULL;
max = 0;
p = str;
while(1)
{
while(*p != NULL *p !=ch) p++;
if(*p== ch)
{
for(p1=p++; *p==ch; p++);
if(p-p1 max)
{
max = p-p1;
pmax = p1;
}
}
}
return pmax;
}
函數(shù)名: strncpy
功 能: 串拷貝
用 法: char *strncpy(char *destin, char *source, int maxlen);
程序例:
#include stdio.h
#include string.h
int main(void)
{
char string[10];
char *str1 = "abcdefghi";
strncpy(string, str1, 3);
string[3] = '\0';
printf("%s\n", string);
return 0;
}
如果你不是想從第1位開始截取,比如你想從第5位截取,則改為
strncpy(string, str1+5, 3);
后面的3表示長度,就是從第5位后面的3個字符
補充回答:
strncpy(string, str1+3, 2); /*打印出來第4、5位*/
#include
#include
int substring(char *str,char *str1);//函數(shù)原型
int main(void)
{
char str[64]={0};
char str1[16]={0};
int i,j,x;
printf("please put the string\n");
gets(str);//輸入的原字符串
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.再一次循環(huán)到 這里函數(shù)的參數(shù)發(fā)生變化,p重新指向strstr返回值,如此循環(huán)。
if(p != NULL) {
str=p+1;//2.str同樣指向strstr返回值p的下一個地址。
x=x+1;
}
}while(p!=NULL);
return x;
}
另一種方法,不用庫函數(shù)來實現(xiàn),來自他人。。。
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;
}
#include stdio.h
#include stdlib.h
char *substr(const char *s,int n1,int n2)/*從s中提取下標(biāo)為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;
}
一個簡單的方法!