2
« en: Jueves 4 de Marzo de 2010, 13:14 »
Buenas necesito que me ayudeis con un programa en C. El programa tiene que almacenar un texto en un fichero y luego pedirle al usuario cuantas lineas visualizar de este texto y mostralo.
El programa me crea el fichero pero dentro me escribe muchos simbolos raros en vez del programa y a la hora de pedir las lineas, el usuario las introduce y no muestra nada. Os dejo el codigo haber si me podeis hechar una mano.
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define MAXFILAS 22
#define MAXCOLUMNAS 80
void IniciarMatriz ( char matriz [MAXFILAS] [MAXCOLUMNAS]);
void Leer (FILE *fichero);
void Escribir (FILE *fichero, char matriz [MAXFILAS] [MAXCOLUMNAS]);
int main ( )
{
FILE *libro=NULL;
int final = 0 ;
char texto [ MAXFILAS ] [ MAXCOLUMNAS ];
while (final != 0 )
IniciarMatriz(texto);
Escribir(libro,texto);
Leer(libro);
return 0;
}
/* Funcion que inicia la matriz la cual contiene el texto elegido del libro. */
void IniciarMatriz (char texto [ MAXFILAS ] [ MAXCOLUMNAS ] )
{
strcpy(texto[ 0 ], " Todas las concepciones de la Iglesia son reconocidas por lo que son, como la más triste acuñación de moneda ");
strcpy(texto[ 1 ], " falsa que ha existido hecha con el fin de desvalorizar la Naturaleza y los valores naturales: ");
strcpy(texto[ 2 ], " el sacerdote mismo es reconocido como lo que es, como la más peligrosa especie de parásito ");
strcpy(texto[ 3 ], " como la verdadera araña venenosa de la vida... Nosotros sabemos, nuestra conciencia sabe hoy, ");
strcpy(texto[ 4 ], " qué valen en general aquellas funestas ínvenciones de los sacerdotes y de la iglesia, de qué servirán, ");
strcpy(texto[ 5 ], " esto es, para conseguir aquel estado de damnificación de la humanidad, cuyo espectáculo produce náuseas, ");
strcpy(texto[ 6 ], " los conceptos de más allá, juicio final, inmortalidad del alma, el alma misma, sin instrumentos de tortura ");
strcpy(texto[ 7 ], " y sistemas de crueldad, en virtud de los cuales el sacerdote se hizo el amo y siguió siendo el amo "),
strcpy(texto[ 8 ], " Todos saben esto, y sin embargo todo sigue igual. Donde ha ido a parar el último sentimiento del decoro ");
strcpy(texto[ 9 ], " del respeto de si mismo, si hasta nuestros hombres de Estado – por lo demás, una especie de hombres y ");
strcpy(texto[ 10 ], " de anticristianos bastante descocada en la práctica – se llamean aun hoy cristianos y toman la comunión? ");
strcpy(texto[ 11 ], " Toda práctica de cada momento, todo instinto, toda valoración que se convierte en hecho es hoy ");
strcpy(texto[ 12 ], " anticristiana;¿qué aborto de falsedad debe ser el hombre moderno para no avergonzarse todavía de llamarse cristiano! ");
strcpy(texto[ 13 ], " Ya la palabra cristiano es un equivoco: en el fondo no hubo más que un cristiano, y éste murió en la cruz. ");
strcpy(texto[ 14 ], " El Evangelio murió en la cruz. Lo que a partir de aquel momento se llamó evangelio era lo contrario de lo que ");
strcpy(texto[ 15 ], " él vivió; una mala nueva, un Dysangelium. Es falso hasta el absurdo ver la característica del cristiano ");
strcpy(texto[ 16 ], " en una fe, por ejemplo, en la fe de le redención por medio de Cristo; únicamente la práctica cristiana, el vivir ");
strcpy(texto[ 17 ], " como vivió el que murió en la cruz es lo cristiano... Aun hoy, tal vida es posible para ciertos hombres, ");
strcpy(texto[ 18 ], " y hasta necesaria: el verdadero, el originario cristianismo será posible en todos los tiempos. ");
strcpy(texto[ 19 ], " Yo llamo al cristianismo la única gran maldición, la única gran corrupción interior, el único gran instinto de venganza, ");
strcpy(texto[ 20 ], " yo la llamo la única inmortal vergüenza de la humanidad. ");
}
/* Función que escribe y almacena en el fichero el contenido del texto. */
void Escribir (FILE *fichero, char texto [ MAXFILAS ] [ MAXCOLUMNAS ])
{
int i;
int j;
if ((fichero = fopen("texto.txt", "w"))== NULL)
{
printf ( "n Error al crear el fichero n");
}
else
{
for (i = 0; i < MAXFILAS; i++)
{
for (j = 0; j < MAXCOLUMNAS; j++)
{
fprintf( fichero, "%c", texto [ i ][ j ] );
}
}
}
}
/* Función que lee el contenido almacenado en el texto, pide las lineas que el usuario desea ver y las imprime. */
void Leer (FILE *fichero)
{
int i;
int lineas;
int j;
char caracter;
if ((fichero = fopen("texto.txt", "r"))== NULL)
{
printf ( "n Error al crear el fichero n");
}
else
{
do {
printf("nIntroduzca numero de lineas que desea visualizar: ('Pulse 0 para salir') n ");
scanf ("%d",&lineas);
fflush(stdin);
for (i = 0; i < lineas; i++)
{
for (j = 0; j < MAXCOLUMNAS; j++)
{
fscanf(fichero , "%c", &caracter);
printf("%c", caracter);
}
}
} while (lineas!=0);
fclose ( fichero );
}
}