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

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

从str1 中的前10个字符 结果是:dwew13lkoi
从str2中提取3-18的字符 结果是:2dww_dwoiewolksd
由于不太懂C,故请附上可执行的完整源代码,感谢!

给你写一个简单的吧,写得复杂了,也不好,上次给你写的一个,采用了一些特殊方法,还不如直接写的,晕!

学程序,关键是学方法!

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);

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-02
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 }
相似回答