Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo implementar un editor de texto simple

Cómo implementar un editor de texto simple

1. Propósito del diseño

El editor de texto simple es un programa de servicio del sistema orientado al usuario. Se usa ampliamente en una serie de operaciones como entrada, eliminación, reemplazo, búsqueda y modificación de programas fuente. Incluso se utiliza para editar periódicos, publicaciones periódicas y libros. Es un software de aplicación relativamente práctico para editar y componer, así como para redactar y pulir documentos de oficina. Este software está especialmente diseñado para que los usuarios editen texto y puede cumplir con la mayoría de los requisitos de los usuarios para operaciones de texto.

2. Contenido y requisitos del diseño

(1) Leer el archivo (de texto) y crear una nueva cadena (2) Ver el contenido del archivo (de texto) fuente y la información de composición (3 ) Ver la cadena actual (4) Ver la información de composición de la cadena actual (5) Buscar la cadena a partir de la longitud especificada (6) Encontrar la posición de la cadena especificada (7) Especificar en la cadena actual (8) Insertar en la posición especificada Cadena (8) Eliminar la subcadena especificada de la cadena actual (9) Reemplazar la subcadena especificada en la cadena actual (10) Guardar los cambios en un archivo (de texto)

(11) Guardar como Archivo (texto) (12) Salga del programa

3. Estructuras de datos utilizadas en este diseño

La única estructura de datos utilizada en este programa es la lista enlazada

En el programa Las operaciones básicas y las estructuras de almacenamiento utilizadas son estructuras de almacenamiento en cadena que utilizan cadenas, y se definen las funciones de operación correspondientes.

typedef struct _String/// Definir estructura de cadena encadenada

{char carácter; // Caracteres que componen una cadena (campo de datos)

struct _String * next; // Puntero a la siguiente estructura de cadena (campo de cadena)

}

}String; // Tipo de cadena

4. Función Diseño detallado del módulo

4.1 Ideas de diseño detalladas

La estructura básica de operación y almacenamiento utilizada por el programa es una estructura de almacenamiento en cadena, y se definen las funciones de operación correspondientes. La operación de edición de texto llama a las siguientes funciones y las combina con funciones de biblioteca para implementar una interfaz gráfica para la edición de texto.

Definición de estructura de almacenamiento encadenada:

typedef struct _String//Definición de estructura de cadena encadenada

{

carácter //; Composición de la cadena (campo de datos)

struct _String* next ; //Puntero a la siguiente estructura de cadena (campo de cadena)

}. String; //Tipo de cadena

Definir estructura de información de cadena:

typedef struct _StringInformation//Definir estructura de información de cadena

{

Cadena * str; // cadena de cadena primer nodo

int letras_count; //número de letras

int cifras_count;

int space_count; //recuento de espacios

p>

int endline_count; //Número de nuevas líneas

int others_count; //Número de otros caracteres

int faces_count; //Número total de caracteres

}.

StringInformation; // tipo de información de cadena

Definir la estructura del índice de cadena:

typedef struct _Index//definir la estructura del índice de cadena

{

int sub_index; // La posición (o índice) de la subcadena en su cadena principal

struct _Index* next_index // Puntero a la siguiente estructura de índice de cadena de la subcadena

p>}.

Index; // tipo de índice de cadena

La subfunción llamada es la siguiente:

int StringToUnsignedInt(char* s, int max); //La cadena se convierte en un entero sin signo

p >

void InitalizeStringInformation(StringInformation* SI, int initalizeAll); //Inicialización de información de cadena

void CreatStringFromArray(String** S, char* cString);

int CreatStringFromFile( String** S, char* filePath); //crea una cadena a partir del archivo

int StringLength( String* S); //encuentra la longitud de la cadena< / p>

int StringCompare( String* S1 , String* S2 ) ; // comparación de cadenas

void StringCopy( String** targetString , String* sourceString ) ;

void SubString (String* S, int index, int subLength, String** subS); //Extracción de subcadenas

int SubStringIndex(String* S, String* subS);

int StringInsert (String** S, int index, String* insertString); //Inserción de cadena

int SubStringDelete(String** S, int index, int subLength); //SubStringDelete

); void PrintString( String* S ); //Salida de cadena

void PrintIndex( Index* subIndex) ; //Todos los índices de salida de subcadena

void PrintStringInformation( StringInformation* SI );

void SaveToFile( String* S , char* filePath ) ; //Guardar cadena en el archivo

void DestroyString( String** S ) //String Destroy

void DestroyIndex( Index** subIndex ); //Destrucción del índice de subcadena

(1) Leer archivo (texto) para crear una nueva cadena

Esta función La idea es construir un cadena de una matriz de caracteres o archivo.

En términos de crear una cadena a partir de un archivo, primero defina una cadena StringInformation

S, tempString = S.str, luego abra el archivo txt en la computadora get(filePath),

llamar a la función CreateStringFromFile(amp; S. str, filePath) escribe la nueva cadena S en filePath para lograr esto.

(2) Ver el contenido del archivo fuente (texto) y la información de composición

Primero, llame a la función PrintString(

Source.str) para la salida de cadena, y luego llame a la subfunción PrintStringInformation(amp; Source

) para generar la información de composición de la cadena y, finalmente, llame a DestroyString(amp; Source.str) para destruir la cadena.

(3) Ver la cadena actual

Primero borre la pantalla system( "cls" ); luego llame a la subfunción PrintString( S.str ) para generar la cadena S.

(4) Ver la información de composición de la cadena actual

Llame a la subfunción PrintStringInformation(amp; S) para generar la información de composición de la cadena S.

(5) Encuentre una cadena de longitud especificada comenzando desde la posición especificada

Primero, debe ingresar la posición inicial de la cadena get(

input ) , position = StringToUnsignedInt( input , -1)

Llame a esta función para convertir la entrada en un entero sin signo y asignar un valor a la posición, luego ingrese la longitud de la subcadena get( input ), subLength = <; /p>

StringToUnsignedInt( input, -1)

Llame a esta función para convertir la entrada en un entero sin signo y asigne un valor a subLength, luego llame a esta función SubString( S. str, position, - 1)

Luego ingrese la longitud de la subcadena. str, position,

subLength, amp; subString) para extracción de subcadenas

(6) Encuentra la posición de la cadena especificada

Primero, debes ingresar; La cadena a encontrar gets(

cString), CreatStringFromArray(& subString, cString

) luego llame a esta función para establecer cString en la cadena subString, llame a SubStringIndexAll( S. str , subString ,

SubStringIndexAll( S. str, subString,

SubStringIndexAll( S. str, subString,

SubStringIndexAll( S. str, subString,

p>

)str, subString,

amp; subIndex) para generar todas las posiciones donde aparece la subcadena subString en la cadena principal S y luego destruir subString.

(7) Inserte una cadena en la posición especificada en la cadena actual

Primero, ingrese la posición donde desea insertar la cadena gets (entrada) y luego llame a la función position = StringToUnsignedInt( input , -1 ) convierte la entrada en un entero sin signo y asigna el valor a la posición

Luego inserta la entrada en la cadena

gets( cString ), CreatStringFromArray( amp; newString , cString

) Utilice el método de matriz de caracteres para crear una cadena para crear newString y luego llame a la función StringInsert(amp; S.str, position,

newString) para insertar newString en el archivo S. str y luego destruir newString.

(8) Eliminar la subcadena especificada de la cadena actual

Primero ingrese la subcadena que se eliminará string gets(

cString) y luego llame a la función CreatStringFromArray(amp; subString, cString

) crea una nueva cadena subString y llama a la función count = SubStringIndexAll(S.str, subString,

) para crear una nueva cadena. str , subString ,

amp; subIndex ) genera todas las posiciones donde aparece la subcadena subString en la cadena principal S.

Luego ingrese la posición de la subcadena que se eliminará get(

input ), position = StringToUnsignedInt( input ,

-1) y llame a la función para convierta la entrada a un entero sin signo y asigne el valor a la posición

Luego llame a la función para eliminar la subcadena SubStringReplaceSingle(&S.str, position, subString,

NULL).

(9) Reemplace la subcadena especificada por la cadena actual

Primero ingrese la subcadena a reemplazar gets(cString)

, CreatStringFromArray(amp; subString, cString

) Llame a la función para generar la cadena subString a partir de cString y llame a la función SubStringIndexAll(S.str, position, subString,

ULL). str , subString ,

amp; subIndex ) genera todas las posiciones donde aparece la subcadena subString en la cadena principal S.

Luego ingrese la posición de la subcadena que se reemplazará get (

input) y convierta la entrada en un entero sin signo position = StringToUnsignedInt( input, -1); >

Luego ingrese una cadena para reemplazar la cadena anterior gets(cString), llame a CreatStringFromArray(

amp;replaceString, cString) para reemplazar la entrada cString CreatStringFromArray(

amp; replaceString, cString );

amp; replaceString, cString);

CreatStringFromArray( cString

) Convierte en una nueva cadena replaceString y luego llama a la función SubStringReplaceSingle. ( amp; S.str , position ,

subString , replaceString ) reemplaza la subcadena y luego destruye la subString.

(10) Guardar modificaciones en un archivo (de texto)

Llame a la función SaveToFile( S.str , filePath) para guardar el texto modificado

(11 ) Guardar como archivo (de texto)

Primero, ingrese la ruta absoluta al archivo que desea guardar como otro obtiene (otra ruta). Luego, llame a la función SaveToFile(S.str, anotherPath) para guardar el archivo como otro archivo

(12) Salga del programa

Llame a la función DestroyString(amp; S.str ) para destruir los caracteres String S y salir del programa

.