第一个C语言程序 记事本__控制台

整个程序很简单,下面是流程图:





这个是主函数


#include <iostream>
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#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<stdio.h>

#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 <iostream>
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
#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语言编程技巧。

同是天涯技术白,相逢何必相吐槽……  ^_^

大家一起加油吧


相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页