我写的代码有误,不知错在哪,help
#include
void substring(char *str1,char *str2,int index,int length);
main()
{ int idx,len;
char a[200], b[200];
gets(a);
scanf("%d%d",&idx,&len);
substring(a,b,idx,len);
printf("%s",b);
}
void substring(char *str1,char *str2,int index,int length)
{ char *p;
for(p=@#1;p<=@#2;p++)
{
//提示:在这里,除了把str1中的相应字符复制给str2外,还需要防止str1中的字符用完
//即当str1中的字符用完时,不再复制字符,提前break掉for循环。如何检验str1中的字
//符是否用完呢?
@@1
@@1
}
@#3 //给str2添加结束符。
}
我自己写的代码,求修正
#include
void substring(char *str1,char *str2,int index,int length);
main()
{ int idx,len;
char a[200], b[200];
gets(a);
scanf("%d%d",&idx,&len);
substring(a,b,idx,len);
printf("%s",b);
}
void substring(char *str1,char *str2,int index,int length)
{ char *p;
for(p=str1+index;p<=str1+index+length;p++)
{ //@#1 @#2
//提示:在这里,除了把str1中的相应字符复制给str2外,还需要防止str1中的字符用完
//即当str1中的字符用完时,不再复制字符,提前break掉for循环。如何检验str1中的字
//符是否用完呢?
//@@1
if(*p=='\0')
{
break;
}
int i=0;
str2[i]=*p;
//@@1
}
//@#3 //给str2添加结束符。
}
这么改,供参考:
#include <stdio.h>
void substring(char* str1, char* str2, int index, int length);
int main()
{
int idx, len;
char a[200], b[200];
gets(a);
scanf("%d%d", &idx, &len);
substring(a, b, idx, len);
printf("%s", b);
}
void substring(char* str1, char* str2, int index, int length)
{
char* p;
for (p = str1 + index; p <= str1 + index + length - 1; p++) //for (p = @#1; p <= @#2; p++)
{
//提示:在这里,除了把str1中的相应字符复制给str2外,还需要防止str1中的字符用完
//即当str1中的字符用完时,不再复制字符,提前break掉for循环。如何检验str1中的字
//符是否用完呢?
if (*p) //@@1
*str2++ = *p;
else //@@1
break;
}
*str2 = '\0'; //@#3 //给str2添加结束符。
}
int i=0;
str2[i]=*p;=== 你这是想干啥啊???一直对str2[0]进行赋值?
帮你修改了下程序,你看看,有疑问,可以私聊。
#include <stdio.h>
#include <string.h>
void substring(char *str1,char *str2,int index,int length);
int main()
{ int idx,len;
char a[200], b[200];
fgets(a);
scanf("%d%d",&idx,&len);
substring(a,b,idx,len);
printf("%s",b);
}
void substring(char *str1,char *str2,int index,int length)
{ char *p;
int i=0;
for(p=str1+index;p<=str1+index+length;p++)
{ //@#1 @#2
//提示:在这里,除了把str1中的相应字符复制给str2外,还需要防止str1中的字符用完
//即当str1中的字符用完时,不再复制字符,提前break掉for循环。如何检验str1中的字
//符是否用完呢?
//@@1
if(*p=='\0')
{
break;
}
//int i=0;
str2[i++]=*p;
//@@1
}
str2[i]='\0';
//@#3 //给str2添加结束符。
}
代码改成下面这样试试:
#include <stdio.h>
void substring(char *str1,char *str2,int index,int length);
void main()
{
int idx,len;
char a[200], b[200];
gets(a);
scanf("%d%d",&idx,&len);
substring(a,b,idx,len);
printf("%s",b);
}
void substring(char *str1,char *str2,int index,int length)
{
char *p;
int i = 0;//这里定义i
for(p=str1+index;p<=str1+index+length;p++)
{ //@#1 @#2
//提示:在这里,除了把str1中的相应字符复制给str2外,还需要防止str1中的字符用完
//即当str1中的字符用完时,不再复制字符,提前break掉for循环。如何检验str1中的字
//符是否用完呢?
//@@1
if(*p=='\0')
{
break;
}
//int i=0;
str2[i++]=*p;//赋值
//@@1
}
str2[i]='\0';
//@#3 //给str2添加结束符。
}