用C++写一个简易文本编辑器,给出的是一个实现“输入”功能的函数,但不能实现输入内容,只能输入标题
大家帮忙看看,看怎么改:#include<stdio.h>#include<stdlib.h>#include<iostream>#include<string.h>//...
大家帮忙看看,看怎么改:
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string.h>//由于该库对字符串封装的很好,故优先使用string类,而非c风格char!!!
using namespace std;
#define OK 0
#define MAX 200
typedef struct text
{
char str[MAX];//存储每一行的元素
struct text *next;//指向后一个节点的指针
int hang;//每一行元素的长度
}text;
char c;//命令
FILE *fp,*out;//文件指针
text *head;//链表的头指针
char filename[30];
int sa=0;//保存文本的标志
//fgets()函数正常时在两种情况下终止:1:读了(n-1)个字符,2.与换行符,另外读到文件末尾返回NULL
void edit()
{
void menu();
text *p1,*p2;
int i;
cout << "enter file name: ";
cin >> filename;
cout<<"contain: "<<endl;
p1=p2=new text();
head=p1;
head->hang=0;
i=1;
while(strcmp(p1->str,"end")!=0)
{
p1=new text();//分配内存
fflush(stdin);//在用fgets()输入之前必须先刷新一下缓冲区,否则会有意想不到的错误出现,这
//个问题让我调试了好几天才发现,太让人气愤了!!!
fgets(p1->str,MAX,stdin);
p1->str[strlen(p1->str)-1]=' ';//注意由于fgets()函数在得到字符串时会连换行符一起获得,故需要在此过滤掉
p1->hang=i;//行号
p2->next=p1;//链接
p2=p1;//保存头指针
i++;
}
p2->next=NULL;
menu();
} 展开
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string.h>//由于该库对字符串封装的很好,故优先使用string类,而非c风格char!!!
using namespace std;
#define OK 0
#define MAX 200
typedef struct text
{
char str[MAX];//存储每一行的元素
struct text *next;//指向后一个节点的指针
int hang;//每一行元素的长度
}text;
char c;//命令
FILE *fp,*out;//文件指针
text *head;//链表的头指针
char filename[30];
int sa=0;//保存文本的标志
//fgets()函数正常时在两种情况下终止:1:读了(n-1)个字符,2.与换行符,另外读到文件末尾返回NULL
void edit()
{
void menu();
text *p1,*p2;
int i;
cout << "enter file name: ";
cin >> filename;
cout<<"contain: "<<endl;
p1=p2=new text();
head=p1;
head->hang=0;
i=1;
while(strcmp(p1->str,"end")!=0)
{
p1=new text();//分配内存
fflush(stdin);//在用fgets()输入之前必须先刷新一下缓冲区,否则会有意想不到的错误出现,这
//个问题让我调试了好几天才发现,太让人气愤了!!!
fgets(p1->str,MAX,stdin);
p1->str[strlen(p1->str)-1]=' ';//注意由于fgets()函数在得到字符串时会连换行符一起获得,故需要在此过滤掉
p1->hang=i;//行号
p2->next=p1;//链接
p2=p1;//保存头指针
i++;
}
p2->next=NULL;
menu();
} 展开
1个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string.h>//由于该库对字符串封装的很好,故优先使用string类,而非c风格char!!!
using namespace std;
#define OK 0
#define MAX 200
typedef struct text
{
char str[MAX];//存储每一行的元素
struct text *next;//指向后一个节点的指针
int hang;//每一行元素的长度
}text;
char c;//命令
FILE *fp,*out;//文件指针
text *head;//链表的头指针
char filename[30];
int sa=0;//保存文本的标志
//fgets()函数正常时在两种情况下终止:1:读了(n-1)个字符,2.与换行符,另外读到文件末尾返回NULL
void edit()
{
void menu();
text *p1,*p2;
int i;
cout << "enter file name: ";
cin >> filename;
cout<<"contain: "<<endl;
p1=p2=new text();
head=p1;
head->hang=0;
i=1;
while(strcmp(p1->str,"end")!=0)
{
p1=new text();//分配内存
fflush(stdin);//在用fgets()输入之前必须先刷新一下缓冲区,否则会有意想不到的错误出现,这
//个问题让我调试了好几天才发现,太让人气愤了!!!
fgets(p1->str,MAX,stdin);
p1->str[strlen(p1->str)-1]=' ';//注意由于fgets()函数在得到字符串时会连换行符一起获得,故需要在此过滤掉
p1->hang=i;//行号
p2->next=p1;//链接
p2=p1;//保存头指针
i++;
}
p2->next=NULL;
menu();
}
#include<stdlib.h>
#include<iostream>
#include<string.h>//由于该库对字符串封装的很好,故优先使用string类,而非c风格char!!!
using namespace std;
#define OK 0
#define MAX 200
typedef struct text
{
char str[MAX];//存储每一行的元素
struct text *next;//指向后一个节点的指针
int hang;//每一行元素的长度
}text;
char c;//命令
FILE *fp,*out;//文件指针
text *head;//链表的头指针
char filename[30];
int sa=0;//保存文本的标志
//fgets()函数正常时在两种情况下终止:1:读了(n-1)个字符,2.与换行符,另外读到文件末尾返回NULL
void edit()
{
void menu();
text *p1,*p2;
int i;
cout << "enter file name: ";
cin >> filename;
cout<<"contain: "<<endl;
p1=p2=new text();
head=p1;
head->hang=0;
i=1;
while(strcmp(p1->str,"end")!=0)
{
p1=new text();//分配内存
fflush(stdin);//在用fgets()输入之前必须先刷新一下缓冲区,否则会有意想不到的错误出现,这
//个问题让我调试了好几天才发现,太让人气愤了!!!
fgets(p1->str,MAX,stdin);
p1->str[strlen(p1->str)-1]=' ';//注意由于fgets()函数在得到字符串时会连换行符一起获得,故需要在此过滤掉
p1->hang=i;//行号
p2->next=p1;//链接
p2=p1;//保存头指针
i++;
}
p2->next=NULL;
menu();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询