2 froginforg FrogInForg 于 2014.11.26 22:58 提问

写一个文本编辑器的问题

自己在写一个文本编辑器,读取文件的函数open()和打印view()存在问题,但是找不到错误啊
/*文本编辑器editor源代码*/
//预处理开始
#include
#include
#include
#include
typedef struct node
{
char ch;
struct node *next;
} node;

typedef struct Hnode
{
node next;
struct Hnode * next1;
} Hnode;
void open(Hnode * Hp)
{
FILE
fp;
Hnode q11,*q22;
node *p11,*p22,*hp;
char temp;
int count = 0,flags = 1;
char filename[30];//save the name od dom
printf("输入文件名,例如格式[c:\wb.txt]:");/
输入文件名格式*/
scanf("%s",filename);//输入文件名
fp=fopen(filename,"r");
if(fp==NULL)
{
printf("Open file error!\n");
getch();
exit(0);

}
q11 = Hp;
while(!feof(fp))
{
    count=0;
    flags=1;
    q22=(Hnode *)malloc(sizeof(Hnode));
    p11=(node *)malloc(sizeof(node));
    while((temp=fgetc(fp))!=10&&count<=76&&!feof(fp))//76 is the max
    {
        p22=(node *)malloc(sizeof(node));
        if(flags==1)
        {
            hp=p22;
            flags=0;
        }
        p22->ch=temp;
        p22->next=NULL;
        p11->next=p22;
        p11=p22;
        count++;
    }
    if(temp==10)
    {
        p22=(node *)malloc(sizeof(node));
        p22->ch=13;
        p22->next=NULL;

        p11->next=p22;
        p11=p22;
    }
    if(!feof(fp))
    {
        q22->next=hp;
        q22->next1=NULL;
        q11->next1=q22;
        q11=q22;
    }
}

fclose(fp);
Hp=Hp->next1;
return ;

}
void view(Hnode q)
{
node *p;
do
{
p=q->next;
while(p!=NULL&&p->ch>=32&&p->chch!=13&&p->ch!=-1)
{
putch(p->ch);
p=p->next;
}
q=q->next1;
if((p->ch==13||p->ch==-1)&&q!=NULL)
{
printf("\n");
}
}
while(q!=NULL);
}
//函数完成
int main()
{
Hnode
p;
open(p);
//view(p);
}

2个回答

devmiao
devmiao   Ds   Rxr 2014.11.26 23:02

编写一个文本编辑器最简单的方式(使用VC++,无需编写任何代码,只要鼠标操作即可完成):
新建一个MFC Win32程序,然后选择SDI,然后其余默认,最后视图从CEditView,而不是从CView继承,再点完成。就写好了,至于源代码,自己可以慢慢研究。这个编辑器已经支持新建、打开、保存、剪切、复制、粘贴、查找、替换等功能。

happyparrot
happyparrot   Ds   Rxr 2014.11.27 08:03

你说的问题到底是什么呢?你不描述,让别人猜啊

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!