这个问题我有两种思路,其中一种没问题,但是这一种一直有个点通过不了,不知道怎么回事
#include
#include<string.h>
char* str_delete(char* s, int v, int w);
int main() {
char str[300]; int v, w;
scanf_s("%d%d", &v, &w);
getchar();
gets(str);
puts(str_delete(str, v, w));
return 0;
}
char* str_delete(char* s, int v, int w) {
char* mark = s + w;
for (int j =0; j 1; j++) {
if ((v + w) < strlen(s)){
*(s + w) = *(s);
s++;
}
}
return mark;
}
#include<string.h>
char* str_delete(char* s, int v, int w);
int main() {
char str[300]; int v, w;
scanf_s("%d%d", &v, &w);
getchar();
gets(str);
puts(str_delete(str, v, w));
return 0;
}
char* str_delete(char* s, int v, int w) {
char* mark = s + w;
//移动v-1个字符,即v-1次
for (int j = 1; j <= v - 1; j++) {
//应该从后往前移动字符
//第v-1字符(下标v-2)开始移动到v+w-1(下标v+w-2)位置
//第v-2字符开始移动到v+w-2位置
// ...
// ...
*(s + v + w - j - 1) = *(s + v - j - 1);
}
return mark;
}