我也不知道为什么就是过不了洛谷
#include<stdio.h>
#include<string.h>
void substring(char *from,char *to,int m,int n) {
int i=0,k;
for(; m<=n; m++) {
*(to+i)=*(from+m);
i++;
}
for(k=0; k<=m-n; k++)
printf("%c",*(to+k));
}//将from指向的字符串中的从第m~n的部分字符复制到to
//输出to
int main() {
char s1[100],s2[100];
int m,n;
scanf("%[^\n]\n%d %d",s1,&m,&n);
substring(s1,s2,m,n);
}
修改如下,供参考:
#include<stdio.h>
#include<string.h>
void substring(char *from,char *to,int m,int n) {
int i=0;
for(i=0; m<=n; m++,i++)
*(to+i)=*(from+m);
*(to+i) = '\0';
//for(k=0; k<=m-n; k++)
//printf("%c",*(to+k));
}//将from指向的字符串中的从第m~n的部分字符复制到to
//输出to
int main() {
char s1[100]={0},s2[100]={0};
int m,n;
scanf("%[^\n]\n%d %d",s1,&m,&n);
substring(s1,s2,m,n);
printf("%s",s2);
return 0;
}
你可以看一下m和n指的时数组下标还是元素的第几个,然后看一下s的长度,最好把题目的完整要求以及输入输出的示例贴出来
#include<stdio.h>
#include<string.h>
char s[100000];
int main() {
int m, n;
scanf("%[^\n]\n%d %d", s, &m, &n);
int len = strlen(s);
for (int i = m; i <= n && i < len; i++)
{
printf("%c", s[i]);
}
return 0;
}
scanf("%[^\n]\n%d %d",s1,&m,&n);改为scanf("%s%d%d",s1,&m,&n);
以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!