编写一个求字串的函数sub_str(char *s1,char *s2,int m,int n),作用是将字符串s1中从第m个字符开始的n个字放入字符串s2中;该怎么处理
编写一个求字串的函数sub_str(char *s1,char *s2,int m,int n),作用是将字符串s1中从第m个字符开始的n个字放入字符串s2中;
编写一个求字串的函数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);}
------解决方案--------------------
实现得文艺一点应该像下面
编写一个求字串的函数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);}
------解决方案--------------------
实现得文艺一点应该像下面
- C/C++ code
void sub_str(char *s1,char *s2,int m,int n){ memcpy(s2,s1+m,sizeof(char)*n); }
------解决方案--------------------
下标从0算还是1算,根据自己的需要选择就可以了
------解决方案--------------------
仅供参考,虽然不是C语言。(字符串下标从1开始数)
- C/C++ code
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
------解决方案--------------------
代码我就不贴了, 没意思, LZ,貌似是你在赋值那个循环后没有加个'\0' , 也就是s2[i] = '\0' ,亲 , 不信你可以试一下.