整个程序很简单,下面是流程图:
这个是主函数
#include
#include
#include
#include
#include
#include"win.h" //启用各个启动窗口的函数库
#include"blank.h" //打印空格使用的函数库
//system("cls");//清屏函数
using namespace std;
void wrong_input();
void open();
char file_texts[10000];
int main()
{
start:
system("cls"); //清屏函数,为再次使用做准备
FILE *fin=NULL; //为重新定义输入输出做准备 定义 开始标记
win_boot(); //显示 启动窗口
int choose_boot=0;
while(scanf("%d",&choose_boot)!=EOF) //获取 用户输入值,并进行 判断
{
if(1==choose_boot||2==choose_boot) //若选择为“1"或者 "2",则 调用 win_choo1 函数
{
win_choo1();
while((fin=fopen(addr_file,"a+"))==NULL)
{
printf("打开文件错误,请检查您输入的路径.\n");
printf("输入 1 退出\n");
scanf("%s",addr_file);
if(0==strcmp("1",addr_file))exit(0);
} //打开文件,不存在 出错,并询问是否退出,如果 选择退出 则 退出
char cgetc=0;
while(!feof(fin))
{
cgetc=fgetc(fin);
putchar(cgetc);
} //输出 文件 中 原有的内容
win_choodo(); //输出 选择窗口
int choose_do=0; //定义 选择变量
while(scanf("%d",&choose_do)!=EOF) //获取 选择代码
{
if(1==choose_do)
{
fclose(fin);
while((fin=fopen(addr_file,"w"))==NULL)
{
printf("打开文件错误,请检查您输入的路径.\n");
blank_choo();
printf("输入 exit 退出\n");
scanf("%s",addr_file);
if(0==strcmp("exit",addr_file))exit(0);
} //打开文件,不存在 出错,并询问是否退出,如果 选择退出 则 退出
printf("\n\t****************************修改方法*****************************\n\t 右击窗口--标记--选中所有文本--按“Enter”--右击窗口--粘贴\n\t 移动光标修改数据(输入Ctrl + Z键后按回车结束)\n\t****************************修改方法*****************************\n");
while((cgetc=getchar())!=EOF)
{
fputc(cgetc,fin);
} //将 输入的字符 保存到 文件 中,以EOF结束
fclose(fin);
printf("写入成功,选择“1”回主界面,选择“2“退出\n"); //输出选择界面
while(scanf("%d",&choose_do)!=EOF)
{
if(1==choose_do)goto start; //返回主界面
else if(2==choose_do)exit(0); //退出
else printf("输入有误,请重新输入选择!\n");
}
}
else if(2==choose_do)
{
printf("\n请输入您想添加的内容,若您想结束输入,请先按下ENTER (回车)键,再按下Ctrl + Z 键。\n");
while((cgetc=getchar())!=EOF)
{
fputc(cgetc,fin);
} //将 输入的字符 保存到 文件 中,以EOF结束
printf("写入成功,选择“1”回主界面,选择“2“退出\n"); //输出选择界面
fclose(fin);
while(scanf("%d",&choose_do)!=EOF)
{
if(1==choose_do)goto start; //返回主界面
else if(2==choose_do)exit(0); //退出
else printf("输入有误,请重新输入选择!\n");
getchar();
}
}
else
{
blank_choo();
printf("输入有误,请重新输入!\n");
}
}
break;
}
else if(3==choose_boot) //若选择为“3”,则 退出
{
blank_head();
exit(0);
}
else //如若输入不为前三个值 则 报错 并重新输入
{
wrong_input();
}
}
return 0;
}
void wrong_input()
{
printf ("\n");
blank_choo();
printf("您输入了一个不存在的值! \n");
blank_head();
printf("请重新输入!:");
}
void open()
{
if((addr_file=(char*)calloc(10000,sizeof(char)))==NULL) //判断 分配空间 是否成功,不成功则 退出
{
printf("程序出错,请按任意键退出程序!");
getchar();
getchar();
exit(0);
}
printf("文件路径:");
scanf("%s",addr_file); //使用 指针 传递 文件地址,函数不必 返回 值
}
blank.h 控制输出的空格,TC以后的都不支持图形函数,只好用这个将就了
#ifndef BLANK_H_INCLUDED
#define BLANK_H_INCLUDED
#include
#define NUM_BLANK 30
#define NUM_LINE 23
#define NUM_CHOO 18
void blank_head()
{
for(int a=NUM_BLANK;a>=0;a--)
printf(" ");
}
void blank_line()
{
for(int a=NUM_LINE;a>=0;a--)
printf(" ");
}
void blank_choo()
{
for(int a=NUM_CHOO;a>=0;a--)
printf(" ");
}
#endif // BLANK_H_INCLUDED
win.h 用来输出不同的窗口信息
#ifndef WIN_H_INCLUDED
#define WIN_H_INCLUDED
#include
#include
#include
#include
#include"blank.h"//打印空格使用的函数库
//system("cls");//清屏函数
using namespace std;
char *addr_file;//指针储存 文件路径 字符串
void open();
void win_boot()
{
printf("\n");
blank_head();
printf("请选择下列操作\n\n");
blank_line();
printf("1. 打开一个原有的文档\n\n");
blank_line();
printf("2. 新建一个空白文档\n\n");
blank_line();
printf("3. 退出\n\n");
blank_choo();
printf("请输入您的选择: ");
}
void win_choo1()
{
system("cls");//清屏函数
blank_line();
printf("请在下方输入您的文档的路径:\n");
blank_choo();
printf("例如: c:\\file\\test.txt (注意区分中英文)\n");
blank_line();
open();
}
void win_choodo()
{
blank_line();
printf("您是想修改原有的文档还是在其之后添加新的内容:\n");
blank_choo();
printf("请输入您的选择:\n");
blank_choo();
printf("1:修改原有的文档:\n");
blank_choo();
printf("2: 添加新的内容:\n");
blank_line();
}
#endif // WIN_H_INCLUDED
总结:
1、 记事本的功能很单一,不包括查找以及替换等常用内容。
2、文件更改功能比较繁琐,而且换行符会导致上一行无法编辑。
3、程序的容错率不高。
这是第一个成品程序,功能比较单一,但是不失为一个好的开始。接下来本人打算做管理系统,借此进一步熟悉文件的操作以及链表等一系列更高级的C语言编程技巧。
同是天涯技术白,相逢何必相吐槽…… ^_^
大家一起加油吧