(2) 复制文本:先输入要复制文本的起始位置和字符个数,然后再输入要粘贴的目的位置,实现粘贴。允许不断输入粘贴位置,实现多次粘贴,直到用户选择不再继续。每次粘贴后显示当前内容 c语言
时间: 2024-05-10 15:18:41 浏览: 106
以下是C语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char text[MAX_LEN + 1];
int start, num, dest;
// 输入文本
printf("请输入文本(最多%d个字符):\n", MAX_LEN);
fgets(text, MAX_LEN + 1, stdin);
// 去掉最后的换行符
text[strlen(text) - 1] = '\0';
while (1) {
// 输入复制位置和字符个数
printf("请输入复制位置和字符个数(以空格隔开):");
scanf("%d %d", &start, &num);
// 输入粘贴位置
printf("请输入粘贴位置:");
scanf("%d", &dest);
// 复制文本
char copy[MAX_LEN + 1];
strncpy(copy, text + start, num);
copy[num] = '\0';
// 粘贴文本
memmove(text + dest + num, text + dest, strlen(text) - dest + 1);
strncpy(text + dest, copy, num);
// 显示当前文本
printf("当前文本:%s\n", text);
// 是否继续粘贴
char choice;
printf("是否继续粘贴?(y/n)");
scanf(" %c", &choice);
if (choice == 'n' || choice == 'N') {
break;
}
}
return 0;
}
```
在上面的代码中,首先定义了一个最大长度为100的字符数组`text`,用于存储输入的文本。然后使用`fgets`函数从标准输入中读取文本。由于`fgets`函数会读取换行符,因此需要手动将最后一个字符设置为`\0`。
接下来进入一个无限循环,每次循环中先输入复制位置和字符个数,然后输入粘贴位置。使用`strncpy`函数将要复制的文本拷贝到一个临时数组`copy`中,然后使用`memmove`函数将粘贴位置后面的文本向后移动,最后使用`strncpy`函数将复制的文本粘贴到目的位置。粘贴完成后显示当前文本。
最后询问用户是否继续粘贴,如果选择不继续,则退出循环,程序结束。
阅读全文