我是新人,希望能直接给出代码,如果正确,我一定会采纳的。
// Q1051301.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
char content[1000][5000];
char filename[512];
int linecnt;
void display()
{
int n;
scanf("%d", &n);
if (n > linecnt)
printf("第%d行不存在!", n);
else
printf("%s", content[n - 1]);
}
void del()
{
int n;
scanf("%d", &n);
if (n > linecnt)
printf("第%d行不存在!", n);
else
{
for (int i = n - 1; i < linecnt - 1; i++)
{
strcpy(content[i], content[i + 1]);
}
linecnt--;
}
}
void cucd(int type)
{
int n, m;
scanf("%d %d", &n, &m);
if (type == 2) m = m + 1;
for (int i = linecnt; i > m - 1; i--)
{
strcpy(content[i], content[i - 1]);
}
if (n >= m) n = n + 1;
strcpy(content[m - 1], content[n - 1]);
linecnt++;
}
void save()
{
FILE *fp;
fp = fopen(filename, "w+");
for (int i = 0; i < linecnt; i++)
fputs(content[i], fp);
fclose(fp);
}
int main()
{
int choice;
start:
printf("文本编辑器\n1 新建文件\n2 编辑文件\n请选择:");
scanf("%d", &choice);
if (choice == 1)
printf("请输入新文件的文件名:");
else if (choice == 2)
printf("请输入打开文件的文件名:");
else
goto start;
scanf("%s", &filename[0]);
FILE *file;
if (choice == 1)
{
if (fopen(filename, "r") == NULL)
{
file = fopen(filename, "w");
fclose(file);
}
else
{
fclose(file);
printf("文件已经存在\n");
goto start;
}
}
else
{
if ((file = (fopen(filename, "r"))) != NULL)
{
linecnt = 0;
while (1)
{
if (fgets(&content[linecnt++][0], 5000, file) == NULL)
break;
}
fclose(file);
}
else
{
printf("文件不存在\n");
goto start;
}
}
char cmd[10];
while (1)
{
printf("L n 显示第n行\n");
printf("D n 删除第n行\n");
printf("CU n m 将第n行复制到第m行上面\n");
printf("CD n m 将第n行复制到第m行上面\n");
printf("SAVE 保存退出\n");
printf("EXIT 放弃修改直接退出\n");
scanf("%s", cmd);
if (strcmp("L", cmd) == 0)
{
display();
}
else if (strcmp("D", cmd) == 0)
{
del();
}
else if (strcmp("CU", cmd) == 0)
{
cucd(1);
}
else if (strcmp("CD", cmd) == 0)
{
cucd(2);
}
else if (strcmp("SAVE", cmd) == 0)
{
save();
break;
}
else if(strcmp("EXIT", cmd) == 0)
{
break;
}
}
return 0;
}
题目分两部分实现,一是创建文件,说白了就是输入一组字符串进行维护,一个字符串表示一行,可以打印到屏幕上;
第二部分就是命令接收了,首先要获取命令字符串,然后进行解析,解析后,根据命令来操作之前存的一组字符串;
同学你可以先试着写一下。