编写一个求字串的函数sub_str(char *s1,char *s2,int m,int n),作用是将字符串s1中从第m个字符开始的n个字放入字符串s2中;

asd168971681111 2012-01-10 11:07:43
编写一个求字串的函数sub_str(char *s1,char *s2,int m,int n),作用是将字符串s1中从第m个字符开始的n个字放入字符串s2中;
问题出在什么地方,求高手指出问题的地方
#include"stdio.h"
#include"string.h"
void sub_str(char *s1,char *s2,int m,int n){


int l1,l2,i;

l2=strlen(s2);
for(i=m;i<=n;i++)
{

(s2+l2-1)++=(s1+m-1)++;}
printf("%s",s2);}
int main(){
int m=0,n=0;
char* s1;
char* s2;
char a[80],b[80];
s1=a;
s2=b;
printf("输入字符串1");
gets(s1);
printf("输入字符串2");
gets(s2);
printf("输入m和n的值");
scanf("%d %d",&m,&n);
sub_str(s1,s2,m,n);}
...全文
1230 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cql_liliang 2012-01-11
  • 打赏
  • 举报
回复
代码我就不贴了, 没意思, LZ,貌似是你在赋值那个循环后没有加个'\0' , 也就是s2[i] = '\0' ,亲 , 不信你可以试一下.
赵4老师 2012-01-11
  • 打赏
  • 举报
回复
仅供参考,虽然不是C语言。(字符串下标从1开始数)
func strmid(len,str1,str2,pos)
dec
var string1:127;
enddec
string1=ljust(str1," ",len);
if (pos eq 1)
string1=str2
&substr(string1, pos+length(str2));
else
string1=substr(string1, 1, pos-1)
&str2
&substr(string1, pos+length(str2));
endif
string1=substr(string1,1,len);
return string1;
endfunc
asd168971681111 2012-01-10
  • 打赏
  • 举报
回复
还有个问题就是
#include"stdio.h"
#include"string.h"
int cpystr(char *pss,char *pds){
while(*pds++=*pss++);
}
main(){
char *pa="CHINA",b[10],*pb;
pb=b;
cpystr(pa,pb);
printf("string a=%s\nstring b=%s\n",pa,pb);
}
这是一道关于字符传递的例题,我想问的就是在这程序中,指针指向的字符串用等号赋值啊????这也行吗???怎么理解???不是只能用指针吗???
while(*pds++=*pss++);这怎么理解?到底是指针在自增传递,还是指针指向的字符在传递啊???
asd168971681111 2012-01-10
  • 打赏
  • 举报
回复
嗯。但我想问下我的那个小程序哪里出了问题了呢?
薛定谔之死猫 2012-01-10
  • 打赏
  • 举报
回复
下标从0算还是1算,根据自己的需要选择就可以了
薛定谔之死猫 2012-01-10
  • 打赏
  • 举报
回复
实现得文艺一点应该像下面
void sub_str(char *s1,char *s2,int m,int n){
memcpy(s2,s1+m,sizeof(char)*n);
}

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧