Publicado: DAsunto: Lectura y escritura en archivos
Hola gente, primero agradecer a Gorka por su manual que me ayudo mucho y aprendi C gracias a su manual.
Bueno, llendo al tema, hice un programa que al inicio te pregunta si queres crear un archivo o leerlo (si ya existe).
Les dejo el source y lo veran mejor. :
Código:
#include <stdio.h> #include <conio.h>
int crear() { FILE *archivo; archivo=fopen("fuck.txt", "w");
if(archivo==NULL) { printf("No se pudo crear el archivo\n\n"); getch(); return 0; } fputs("Linea escrita...\n", archivo); fclose(archivo); printf("El archivo se pudo escribir con exito\n"); return 0; }
int leer() { FILE *archivo; char texto[200];
archivo=fopen("archivo.txt","r"); if(archivo==NULL) { printf("No se pudo abrir el archivo"); getch(); return 0; } fgets(texto, 200, archivo); printf("%c", texto); printf("Pulsa cualquier tecla para terminar..."); fclose(archivo); getch(); return 0; }
int main() { char opcion; printf("Si quieres crear el archivo y llenarlo con datos, escribe 1.\n Si quieres leerlo escribe 2\n"); printf("Escribe la opcion que deseas: "); scanf("%c\n", opcion);
Problema: Cuando lo ejecuto, me pide la opcion, la introdusco y se queda esperando, luego de 2 segndos o 3, me sale el cartel de XP q ha pasado un error. Lo que puedo suponer es que me habre equivocado en el tema de las funciones. :S
Compiladores que use: -Dev C++ -Turbo Borland (En los 2 sin warnings ni nada).
S.O: -Windows XP
Si me pudieran dar una mano, les agradeceria mucho.
Registrado: Apr 15, 2004 Mensajes: 221 Ubicación: En la Luna
Publicado: DAsunto:
Hola:
Solo noto esto por el momento:
Pusiste scanf("%c\n", opcion); Y debe ser:
Código:
scanf("%c", &opcion);
Sobre las funciones... como bien creo debes saber, al estar las funciones por ensima del int main() pues funciona correctamente ... Pero como recomendacion, esten las funciones por Ensima o Debajo del MAIN... acostumbra declarar prototipos .... Ya que cuando usas Muchas Mas Funciones, pues veras que ocurren errores y es necesario como Seguridad y Buena Costumbre, agregar prototipos...
/*Aqui estan corregidas... checa que en PROTOTIPOS se declara la funcion y al final el ;*/
/*NOTA: quita los RETURN que tienes dentro de las funciones*/
Bueno asi deben de quedar... si observas bien YA te las doy CORREGIDAS, osea que tambien modifica tus funciones asi como las puse.
Ahora, te explico el error que tuviste con las funciones... Tus funciones NO regresan valores, asi que son tipo VOID y como NO llevan valores ( parametros dentro ), pues pones solamente void.
ejemplo:
Digamos que quieres que la funcion te regrese un numero Netero, entonces la declaracion como prototipo y como uso seria:
Código:
int funcion( int valorX, int valorY );
int funcion( int valorX, int valorY ) { ....... ..... return valorentero; }
Descripcion:
int funcion( int valorX, int valorY ) tipodevaloraregresar nombredefuncion( tipo valor, tipo valor )
if(archivo==NULL) { printf("No se pudo crear el archivo\n\n"); getch(); }
fprintf(archivo,"Linea escrita...\n"); fclose(archivo); printf("El archivo se pudo escribir con exito\n"); system("PAUSE");
} void leer() {
FILE *archivo; char texto[200];
archivo=fopen("fuck.txt","r"); if(archivo==NULL) { printf("No se pudo abrir el archivo"); getch();
}
fscanf(archivo,"%s",texto); printf("%s", texto);
fclose(archivo); system("PAUSE");
}
int main() { int opcion; printf("Si quieres crear el archivo y llenarlo con datos, escribe 1. \n Si quieres leerlo escribe 2\n"); printf("Escribe la opcion que deseas: "); scanf("%d",&opcion);
Mil gracias a ambos, no me habia acordado de fprintf y fscanf, veo q es bastante ultil, aunque tmb podria haber leido caracter por caracter usando un if con !feof ..
Pero cuando uso el fscanf al imprimir solo me sale "Linea", no me sale "Linea escrita..." Por lo tanto, hice un fgets(texto, 200, archivo) Y me lo leyo sin problemas.
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro