#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 最大输入长度
#define MAX_INPUT_LENGTH 1024
// 存储记事本内容的缓冲区
char content[MAX_INPUT_LENGTH * 100];
// 写入内容到缓冲区
void writeContent(char *newContent) {
strcat(content, newContent);
}
// 从缓冲区读取内容
void readContent() {
printf(“%s”, content);
}
// 复制指定范围内的内容
void copyContent(int start, int end) {
// 此处简单实现为打印要复制的内容
printf(“复制的内容: “);
for (int i = start; i <= end; i++) {
printf(”%c”, content[i]);
}
printf(“\n”);
}
// 粘贴内容到指定位置
void pasteContent(char *pastedText, int position) {
// 简单实现,将粘贴的文本插入到指定位置
char temp[MAX_INPUT_LENGTH * 100];
strncpy(temp, content, position);
strcat(temp, pastedText);
strcat(temp, content + position);
strcpy(content, temp);
}
// 查找指定字符串
int findContent(char *searchString) {
char *found = strstr(content, searchString);
if (found) {
return found - content;
}
return -1;
}
// 替换指定字符串
void replaceContent(char *oldString, char *newString) {
char *found = content;
while ((found = strstr(found, oldString))!= NULL) {
char temp[MAX_INPUT_LENGTH * 100];
int foundPosition = found - content;
strncpy(temp, content, foundPosition);
strcat(temp, newString);
strcat(temp, found + strlen(oldString));
strcpy(content, temp);
found += strlen(newString);
}
}
int main() {
int choice;
char input[MAX_INPUT_LENGTH];
int start, end, position;
char newString[MAX_INPUT_LENGTH]; // 新增用于存储新输入的替换字符串
while (1) {
printf("1. 写入\n");
printf("2. 读取\n");
printf("3. 复制\n");
printf("4. 粘贴\n");
printf("5. 查找\n");
printf("6. 替换\n");
printf("7. 继续\n");
printf("8. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入要写入的内容:");
scanf(" %1023[^\n]", input); // 添加最大长度限制
writeContent(input);
break;
case 2:
readContent();
break;
case 3:
printf("请输入复制的起始位置和结束位置: ");
scanf("%d %d", &start, &end);
copyContent(start, end);
break;
case 4:
printf("请输入要粘贴的内容和粘贴位置: ");
scanf(" %1023[^\n] %d", input, &position); // 添加最大长度限制
pasteContent(input, position);
break;
case 5:
printf("请输入要查找的内容: ");
scanf(" %1023[^\n]", input); // 添加最大长度限制
int foundPosition = findContent(input);
if (foundPosition!= -1) {
printf("找到于位置: %d\n", foundPosition);
} else {
printf("未找到\n");
}
break;
case 6:
printf("请输入要替换的旧内容和新内容: ");
scanf(" %1023[^\n] %1023[^\n]", input, newString); // 添加最大长度限制,并使用新的字符数组存储新字符串
replaceContent(input, newString);
break;
case 7:
// 继续处理的逻辑
printf("请输入继续执行的操作(1 - 写入,2 - 读取,3 - 复制,4 - 粘贴,5 - 查找,6 - 替换): ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入要写入的内容:");
scanf(" %1023[^\n]", input); // 添加最大长度限制
writeContent(input);
break;
case 2:
readContent();
break;
case 3:
printf("请输入复制的起始位置和结束位置: ");
scanf("%d %d", &start, &end);
copyContent(start, end);
break;
case 4:
printf("请输入要粘贴的内容和粘贴位置: ");
scanf(" %1023[^\n] %d", input, &position); // 添加最大长度限制
pasteContent(input, position);
break;
case 5:
printf("请输入要查找的内容: ");
scanf(" %1023[^\n]", input); // 添加最大长度限制
foundPosition = findContent(input);
if (foundPosition!= -1) {
printf("找到于位置: %d\n", foundPosition);
} else {
printf("未找到\n");
}
break;
case 6:
printf("请输入要替换的旧内容和新内容: ");
scanf(" %1023[^\n] %1023[^\n]", input, newString); // 添加最大长度限制,并使用新的字符数组存储新字符串
replaceContent(input, newString);
break;
default:
printf("无效的选择\n");
break;
}
break;
case 8:
return 0;
default:
printf("无效的选择\n");
break;
}
}
return 0;
}
有些c语言编译器可能会出错,本程序通过安卓版c语言编译器。仅供参考。谢谢支持!望指正。