C语言(不是C++)中如何从指定字符串中提取指定开始位置到指定结束位置的一个子串给数组?

如:charstr1[30]="dwew13lkoilesiwokdwok";charstr2[50]="e22dww_dwoiewolksdjfmmm"从str1中的前... 如: char str1[30]="dwew13lkoilesiwokdwok";
char str2[50]="e22dww_dwoiewolksdjfmmm"

从str1 中的前10个字符 结果是:dwew13lkoi
从str2中提取3-18的字符 结果是:2dww_dwoiewolksd
由于不太懂C,故请附上可执行的完整源代码,感谢!
展开
 我来答
ytu_math
2010-10-02 · TA获得超过1558个赞
知道小有建树答主
回答量:784
采纳率:100%
帮助的人:800万
展开全部
给你写一个简单的吧,写得复杂了,也不好,上次给你写的一个,采用了一些特殊方法,还不如直接写的,晕!

学程序,关键是学方法!

void substr(char *str1,char *str2,int start,int end)
{
int ii;
for (ii=start;ii<=end;ii++)
str1[ii-start]=str2[start-1];
str1[ii-start]='\0';
}

main()
{

char str1[30]="dwew13lkoilesiwokdwok";
char str2[50]="e22dww_dwoiewolksdjfmmm"

char str[50];

substr(str,str1,1,10);
printf("1--%s\n",str);

substr(str,str2,3,18);
printf("2--%s\n",str);

}
百度网友620d683a1
2010-10-02 · 超过25用户采纳过TA的回答
知道答主
回答量:253
采纳率:0%
帮助的人:104万
展开全部
1 #include <stdio.h>
2
3 char *sub_str(int start,int end,char *str)
4 {
5 char *sub = NULL;
6 int i = 0;
7 int j = 0;
8 sub = (char *)malloc(end-start);
9 if(NULL == str)
10 return NULL;
11 for(i = start;i<end;i++)
12 {
13 sub[j++] = str[i];
14 }
15
16 sub[end-start]='\0';
17
18 return sub;
19
20 }
21
22 int main ()
23 {
24 char str1[30]="dwew13lkoilesiwokdwok";
25
26 char *sub = NULL;
27
28 sub = sub_str(0,10,str1);
29
30 printf("%s\n",sub);
31
32 return 0;
33 }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式