C 语言中怎样提取指定字符?
C语言中怎样提取指定字符:charstr1[30]="dwoieocisoeklikoi__abb"charstr2[60]="xejwoiwardwoieldkwieo...
C 语言中怎样提取指定字符:
char str1[30]="dwoieocisoeklikoi__abb"
char str2[60]="xejwoiwardwoieldkwieow__amq"
我要提取"__a"前的所有字符:
结果是:
dwoieocisoeklikoi
xejwoiwardwoieldkwieow
char str1[30]="dwoieocisoeklikoi__abb"
char str2[60]="xejwoiwardwoieldkwieow_adwoieo__amq"
我要提取"__a"前的所有字符:
结果是:
dwoieocisoeklikoi
xejwoiwardwoieldkwieow_adwoieo 展开
char str1[30]="dwoieocisoeklikoi__abb"
char str2[60]="xejwoiwardwoieldkwieow__amq"
我要提取"__a"前的所有字符:
结果是:
dwoieocisoeklikoi
xejwoiwardwoieldkwieow
char str1[30]="dwoieocisoeklikoi__abb"
char str2[60]="xejwoiwardwoieldkwieow_adwoieo__amq"
我要提取"__a"前的所有字符:
结果是:
dwoieocisoeklikoi
xejwoiwardwoieldkwieow_adwoieo 展开
4个回答
展开全部
1、先对源字符串检索是否存在子字符串"__a"
2、如果存在,肯定知道存在位置;
3、将源字符串从1开始到存在位置取出,即可。
函数名: strstr
功 能: 在串中查找指定字符串的第一次出现
用 法: #include <string.h>
char *strstr(char *str1, char *str2);
程序例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char *str1 = "Borland International", *str2 = "nation", *ptr;
ptr = strstr(str1, str2);
printf("The substring is: %s\n", ptr);
return 0;
}
要返回第二个字符串在第一个的位置:
k=strstr(s1,s2)-s1+1; //长度
因此取 第一个字符串从长度为 k-1的字符即可。
char fmt[10];
char substr[100];
sprintf(fmt,"%ds",k-1);
sprintf(substr,fmt,str);即可。
#include<string.h>
main()
{
char fmt[10];
char substr[100];
char str1[30]="dwoieocisoeklikoi__abb"
char str2[60]="xejwoiwardwoieldkwieow__amq"
char str3[10]="__a";
k=strstr(str1,str3) - str1;
sprintf(fmt,"%ds",k);
sprintf(substr,fmt,str1);
printf("1 substring is %s",substr);
k=strstr(str2,str3) - str2;
sprintf(fmt,"%ds",k);
sprintf(substr,fmt,str2);
printf("2 substring is %s",substr);
}
2、如果存在,肯定知道存在位置;
3、将源字符串从1开始到存在位置取出,即可。
函数名: strstr
功 能: 在串中查找指定字符串的第一次出现
用 法: #include <string.h>
char *strstr(char *str1, char *str2);
程序例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char *str1 = "Borland International", *str2 = "nation", *ptr;
ptr = strstr(str1, str2);
printf("The substring is: %s\n", ptr);
return 0;
}
要返回第二个字符串在第一个的位置:
k=strstr(s1,s2)-s1+1; //长度
因此取 第一个字符串从长度为 k-1的字符即可。
char fmt[10];
char substr[100];
sprintf(fmt,"%ds",k-1);
sprintf(substr,fmt,str);即可。
#include<string.h>
main()
{
char fmt[10];
char substr[100];
char str1[30]="dwoieocisoeklikoi__abb"
char str2[60]="xejwoiwardwoieldkwieow__amq"
char str3[10]="__a";
k=strstr(str1,str3) - str1;
sprintf(fmt,"%ds",k);
sprintf(substr,fmt,str1);
printf("1 substring is %s",substr);
k=strstr(str2,str3) - str2;
sprintf(fmt,"%ds",k);
sprintf(substr,fmt,str2);
printf("2 substring is %s",substr);
}
展开全部
#include "conio.h"
main()
{
char str1[30]="dwoieocisoeklikoi__abb";
char str2[60]="xejwoiwardwoieldkwieow__amq";
//要提取__a前的所有字符,你可以用一个循环体来一个一个字符的输出,当遇到_(ascii码为95,所以str1[i]-95(str1[i]等于下划线时,str1[i]-95==0,为假跳出循环))时就停止输出
short i=0;for(;i<30&&str1[i]-95;i++)
printf("%c",str1[i]);
printf("\n");//换行
for(i=0;i<60&&str2[i]-95;i++)
printf("%c",str2[i]);
getch();
}
main()
{
char str1[30]="dwoieocisoeklikoi__abb";
char str2[60]="xejwoiwardwoieldkwieow__amq";
//要提取__a前的所有字符,你可以用一个循环体来一个一个字符的输出,当遇到_(ascii码为95,所以str1[i]-95(str1[i]等于下划线时,str1[i]-95==0,为假跳出循环))时就停止输出
short i=0;for(;i<30&&str1[i]-95;i++)
printf("%c",str1[i]);
printf("\n");//换行
for(i=0;i<60&&str2[i]-95;i++)
printf("%c",str2[i]);
getch();
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结合前面几位同学的算法,你改下算法:每个查询的字符串都要遍历完,每次遇到的 _a 位置都记录下来,要输出时,选最后一个_a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言字符串的学习,输入指定字符串,并且计算字符串的位数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询