文本编辑器c语言代码
c#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_FILENAME_LENGTH 256
#define MAX_FILE_CONTENT_LENGTH 1024
void saveToFile(const char *filename, const char *content) {
FILE *file = fopen(filename, "w");
if (file == NULL) {
printf("无法保存文件 %s\n", filename);
return;
}
fprintf(file, "%s", content);
fclose(file);
printf("文件 %s 已保存\n", filename);
}
char* loadFromFile(const char *filename) {
FILE *file = fopen(filename, "r");
if (file == NULL) {
printf("无法打开文件 %s\n", filename);
return NULL;
}
char *content = (char*)malloc(MAX_FILE_CONTENT_LENGTH * sizeof(char));
if (content == NULL) {
printf("内存分配失败\n");
fclose(file);
return NULL;
}
fgets(content, MAX_FILE_CONTENT_LENGTH, file);
fclose(file);
printf("文件 %s 已加载\n", filename);
return content;
}
int main() {
char filename[MAX_FILENAME_LENGTH];
char *fileContent = NULL;
printf("欢迎使用文本编辑器\n");
while (1) {
printf("请输入文件名 (q 退出): ");
scanf("%s", filename);
if (strcmp(filename, "q") == 0) {
break;
}
fileContent = loadFromFile(filename);
if (fileContent != NULL) {
printf("文件内容:\n%s\n", fileContent);
free(fileContent);
} else {
printf("是否创建新文件? (y/n): ");
char choice;
scanf(" %c", &choice);
if (choice == 'y') {
printf("请输入文件内容:\n");
char newContent[MAX_FILE_CONTENT_LENGTH];
scanf(" %[^\n]", newContent);
saveToFile(filename, newContent);
}
}
}
printf("感谢使用文本编辑器\n");
return 0;
}
这个简单的文本编辑器程序允许用户输入文件名,然后加载文件内容,如果文件不存在则询问用户是否创建新文件。用户可以输入内容并将其保存到文件中。程序在用户输入"q"时退出。
编辑和保存文件内容: 允许用户编辑已加载的文件内容,并保存更改。
撤销和重做功能: 实现撤销和重做操作,以便用户可以回退和再做修改。
复制、剪切和粘贴: 添加复制、剪切和粘贴功能,以便用户可以轻松操作文本内容。
查找和替换: 允许用户查找特定的文本字符串并替换为其他内容。
行号和列号显示: 在编辑器中显示行号和列号,以便用户更容易导航和编辑。
多文档支持: 允许用户同时编辑多个文档,并提供选项卡或列表来切换文档。
语法高亮: 添加语法高亮以提高代码可读性。
自动保存: 添加自动保存功能,以避免用户意外丢失未保存的更改。
文件导航: 提供一个文件导航器,用户可以使用它来打开、创建和保存文件。
快捷键和菜单: 提供快捷键和菜单选项,以便用户可以使用键盘或鼠标执行常见操作。
主题和样式: 允许用户选择不同的编辑器主题和样式。
插件和扩展支持: 允许用户自定义编辑器功能,例如添加额外的插件或扩展。