本专栏持续输出数据结构题目集,欢迎订阅。
题目
请编写程序,将给定字符串 s 中从第 pos 个字符开始的 len 个字符删除。
输入格式:
输入首先在一行中给出非空主串 s,不超过 1000 个字符,以回车结束(回车不算在字符串内)。第二行给出位序 pos 和待删除的字符个数 len(均为正整数,保证不超过 s 的长度)。
输出格式:
在一行中输出执行了删除后的结果字符串。
输入样例 1:
This is a test.
8 2
输出样例 1:
This is test.
输入样例 2:
This is a test.
8 12
输出样例 2:
This is
代码
#include <stdio.h>
#include <string.h>
int main() {
char s[1001];
int pos, len;
// 读取输入字符串
fgets(s, sizeof(s), stdin);
// 去除换行符
if (s[strlen(s)-1] == '\n') {
s[strlen(s)-1] = '\0';
}
// 读取删除位置和长度
scanf("%d %d", &pos, &len);
// 计算实际需要删除的字符数
int actual_len = len;
int str_len = strlen(s);
if (pos + actual_len - 1 > str_len) {
actual_len = str_len - pos + 1;
}
// 如果删除长度有效,则执行删除操作
if (actual_len > 0) {
// 将删除部分后的字符前移
memmove(s + pos - 1, s + pos - 1 + actual_len, str_len - (pos - 1 + actual_len) + 1);
}
// 输出结果
printf("%s\n", s);
return 0;
}
1323

被折叠的 条评论
为什么被折叠?



