Te agradezco muchísimo que te hayas esforzado en hacer un video en el cual a mi me ha ayudado y a otros también. Ojalá te vaya super bien porque lo tienes merecido. Un saludo amigo !
/* Vaya luego de investigar un poco logre hacerlo funcionar con este codigo, solo que deja un espacio entre caracter y caracter no se por que aun. Gracias y saludos Emilio Bloque 08.01 Ficheros. Lectura y escritura */ #include #include int main(){ system("color 0A"); //Como abrir un fichero y como leer de el //Primero se declara un cochero char aux; FILE *f;//ahora f es un fichero //Se parte del principio que existe previamente un fichero para leer de el. El bloc de notas tiene que estar cerrado //Inicializar la variable con el fichero f=fopen("ejemplo.txt","r");//No hace falta colocar la direccion porque el archivo esta en la misma carpeta del programa, r es en modo read only if(f==NULL){ printf("No se ha podido abrir el fichero"); exit(1); } //Leer desde el fichero do{ //manera 1 de leer con fgetc. Lee un caracter a la vez, hasta que llegue a EOF. aux=fgetc(f); if feof(f){ break; } printf("%c",aux);//asi lee todos los caracteres del archivo y al llegar a EOF se sale del bucle }while(1); printf(" "); fclose(f); system("pause"); return 0; }
Imagino que a la gente no le interesara demasiado el lenguaje C, por esa razon me he puesto ahora con Java. Tambien puede ser que yo no sepa publicitarlo demasiado bien, esto ultimo es muy problable! Por curiosidad, ¿como conociste el canal?
Buenas he seguido todos los videos de aprender C, y en este último decirte que en cadiz suelen poner los ficheros txt de este tipo, si hay alguien de por aquí que este advertido... Gracias por los tutoriales!!!
una cosa, asi, solo se pueden leer ficheros que solo y solo se hayan escrito antes con dev++ tambien? o yo puedo crear un archivo.txt desde el escritorio introducir algo en el y leerlo con dev++...?
Hola, tengo un problema, y es que estoy compilando en Mac y cuando escribo un archivo desde un programa compilado con la función fopen no me lo escribe en la misma carpeta del programa, siempre se va a la raíz de la carpeta de mi usuario... como puedo arreglar este problema?
No debería ser al revés? Mientras la condición no se cumpla (estar al final del fichero) sigue ejecutándose. Cuando llega al final, se vuelve VERDAD la condición, por lo que el "mientras no sea verdad" se cumple y sale del bucle.
Para leer con fgets no hace falta hacer ningún bucle, porque se va a guardar todo en un string en una sola tajada, no? De todas maneras, no viene mal saber lo del !feof. Gracias por tus videos! :)
Quiza no parezca de mucha utilidad debido a las bases de datos, sin embargo esto lo estoy utilizando en mi tesis debido a que tengo que hacer una simulacion matematica y el metodo mas fiable de hacerlo es con lenguaje C, solo un dato curioso, buen video
Si lo que quieres es generar un fichero para luego importarlo en algún lugar, lo mejor es hacerlo con un fichero, sin embargo si lo que quieres es tratar esa información en otro momento dado dentro del programa, lo ideal es una base de datos. Puedes utilizar bases de datos como SQLite en C, aunque si lo que necesitas es potencia, yo daria el salto a Java, ya que con paralelismo, es mucho mas rapido que C. Un saludo.
@@EmpiezaAProgramar en realidad en mi rama(embebidos) se busca mas bien dar un salto hacia abajo, lenguajes como c, assembler o ya mucho mucho c++. Java es excelente en procesadores, pero en microcontroladores y demostraciones matematicos consume bastantes recursos. Pero lo de sqlite si que lo estudiare a detalles, saludos
Hola, si yo quiero leer un archivo y que el programa solo me escriba 9 caracteres(para luego meter un tabulador y que siga escribiendo despues de meter un /t) como se haria?
no entiendo por qué si primero uso while(fgetc(p)!= EOF) i++; hasta ahí bien , cuenta los caracteres del fichero pero después intento usar fgets: fgets(cad, i+1,p); puts(cad); me imprime en pantalla una cosa muy rara, a q se debe? estoy casi seguro q se debe al fgetc pero no entiendo por que
/* Hola amigo Emilio, muchas gracias por tus videos, no se si aun respondes comentarios de esta serie pero por las dudas te pregunto lo siguiente: ¿Que puede estar fallando en este codigo que no da error de apertura de archivo pero no muestra nada por pantalla?, de hecho luego de pasar el depurador noto que lee el primer caracter y llega a la condicion EOF y se sale como si el archivo existiera pero estuviera vacio. Y lo creé con el bloc de notas y me asegure que no estuviera abierto. gracias y saludos amigo. Bloque 08.01 Ficheros. Lectura y escritura */ #include #include int main(){ system("color 0A"); //Como abrir un fichero y como leer de el //Primero se declara un cochero char aux; FILE *f;//ahora f es un fichero //Se parte del principio que existe previamente un fichero para leer de el. El bloc de notas tiene que estar cerrado //Inicializar la variable con el fichero f=fopen("ejemplo.txt","r");//No hace falta colocar la direccion porque el archivo esta en la misma carpeta del programa, r es en modo read only if(f==NULL){ printf("No se ha podido abrir el fichero"); exit(1); } //Leer desde el fichero while(aux != EOF){ //manera 1 de leer con fgetc. Lee un caracter a la vez, hasta que llegue a EOF. aux=fgetc(f); printf("%c",aux);//asi lee todos los caracteres del archivo y al llegar a EOF se sale del bucle } printf(" "); system("pause"); return 0; }
Hola, estoy viendo vuestro video de la funcion rand es C, necesito saber como usarla para generar palabras aleatorias de un fichero, tengo un fichero llamado Animales.txt donde tengo escrito nombres de animales y quiero que escoja una palabra para jugar al ahorcado
Hola, de antemano muchas gracias por tus excelentes vídeos. Te he estado siguiendo desde el bloque 1.1 y la verdad que muchas felicidades. Sin embargo, en este vídeo estoy teniendo problemas con mi programa, he hecho todo lo que mencionas y lo único que ocurre es que aparece el msj "No se ha podido abrir el fichero". Ya tengo el archivo .txt en la misma carpeta que el programa y todo pero no se que ocurre. Crees que me puedas ayudar a ver cual es el posible fallo? De antemano GRACIAS!!!!!!!!!!!
Muchas gracias por tu atención ;) Ya pasé el depurador, y en la sección de exit(1) se sale y ya no avanza... no se que se puede hacer. Este es mi código: // 8.1 Lectura de ficheros de texto con fgetc y fgets // Funciones de lecturas de fichero.txt #include int main () { char aux; char aux2[100]; FILE *f; f = fopen("1.txt", "r"); if (f == NULL){ printf("No se ha podido abrir el fichero. "); exit(1); } while (aux != EOF){ // empieza a programar EOF (caracter fin de fichero) aux = fgetc(f); printf("%c", aux); } printf(" "); fclose(f);
f = fopen("1.txt", "r"); if (f == NULL){ printf("No se ha podido abrir el fichero. "); exit(1); } while(!feof(f)){ fgets(aux2, 100, f); printf("%s", aux2); } printf(" "); fclose(f); system ("pause"); return 0; } Te agradeceré muchísimo tu ayuda Saludos
Amigo, antes que nada felicitaciones por tus vídeos; son excelentes y prácticos. Todos tus ejemplos me han funcionado pero, este último NO! Y la verdad no sé porque dado que ya revise mi programa mil veces y no le encuentro. Te agradeceré tus comentarios. Ya probé todas las ubicaciones del fichero Ejemplo.txt y sólo me aparece "No se pudo abrir el fichero" Este es mi código: // Bloque 8.1 Funciones de lecturas de un fichero txt. #include #include int main (){ char aux,aux2[100]; FILE *f; f = fopen("C:\Ejemplo.txt","r"); if(f == NULL){ printf("No se pudo habrir el archivo. "); exit(1); } while(aux != EOF){ aux = fgetc(aux); // fgetc: caracter x caracter hasta el final. printf("%c",aux); } printf(" "); fclose(f); f = fopen("C:\Ejemplo.txt","r"); if(f == NULL){ printf("No se pudo habrir el archivo. "); exit(1); } while (!feof(f)){ // ! significa not fgets(aux2,100,f); printf("%s",aux2); } fclose(f); system("pause"); return 0; }
Ola amigo de empieza a programar tengo una duda en el programa. Mi duda sería en la línea 15 a la 18. while (aux != EOF){ aux = fgetc (f); printf ("% c", aux); } Porque si tu te fijas estarías preguntando letra por letra en el while entonces nunca terminaría el bucle while debido a que nunca se cumpliría la condición. Por ejemplo ingresas un E se guarda en la memoria auxiliar pregunta si E != EOF luego ingresa un O y pregunta O != O y al final ingresas un F y pregunta si es F != EOF y por lo que creo que no se cumpliría nunca el while
+luis alfonso hernandez silva Creo recordar que en un video anterior a este Emilio dijo que #include no era estrictamente necesario porque ya viene "incluido" en el programa, pero que era muy buena costumbre ponerlo. Como cualquier humano, a Emilio se le olvidó ponerlo. Asi que si lo pones no te saldra, aunque ya podias haber investigado un poco tu... Un saludo.
pero como constumbre de un buen programador tienes que incluirla pro que te toparas con otros compiladores que tendras que hacerlo, otra cosa el compilador te ayuda pero el que programa eres tu ....
da gusto ver videos tan bien hechos n.n
x2
Muchísimas gracias por la ayuda que nos das a la gente que quiere aprender a programar que sé de antemano que no somos pocos!!!
Te agradezco muchísimo que te hayas esforzado en hacer un video en el cual a mi me ha ayudado y a otros también. Ojalá te vaya super bien porque lo tienes merecido. Un saludo amigo !
mira es excelente me voy a suscribir eres unos de los únicos que enseña buenas tecnicas
Sin duda explicas mejor que mi Profesor . Buenos Tutoriales y bien Organizados ¡Muchas Gracias!
/*
Vaya luego de investigar un poco logre hacerlo funcionar con este codigo, solo que deja un espacio entre caracter y caracter no se por que aun. Gracias y saludos Emilio
Bloque 08.01 Ficheros. Lectura y escritura
*/
#include
#include
int main(){
system("color 0A");
//Como abrir un fichero y como leer de el
//Primero se declara un cochero
char aux;
FILE *f;//ahora f es un fichero
//Se parte del principio que existe previamente un fichero para leer de el. El bloc de notas tiene que estar cerrado
//Inicializar la variable con el fichero
f=fopen("ejemplo.txt","r");//No hace falta colocar la direccion porque el archivo esta en la misma carpeta del programa, r es en modo read only
if(f==NULL){
printf("No se ha podido abrir el fichero");
exit(1);
}
//Leer desde el fichero
do{
//manera 1 de leer con fgetc. Lee un caracter a la vez, hasta que llegue a EOF.
aux=fgetc(f);
if feof(f){
break;
}
printf("%c",aux);//asi lee todos los caracteres del archivo y al llegar a EOF se sale del bucle
}while(1);
printf("
");
fclose(f);
system("pause");
return 0;
}
Muchas gracias, muy util y claro, no entiendo como no tienes mas visitas la verdad, todo muy bien explicado, seguir asi, un saludo!
Imagino que a la gente no le interesara demasiado el lenguaje C, por esa razon me he puesto ahora con Java. Tambien puede ser que yo no sepa publicitarlo demasiado bien, esto ultimo es muy problable!
Por curiosidad, ¿como conociste el canal?
Empieza A Programar Estoy estudiando ingeniería informatica y busque en youtube informacion sobre ficheros y salió tu video el primero :)
Empieza A Programar Yo adoro C, y en parte es gracias a tus tutoriales
Da gusto aprender con tus videos!
que calidad de videos!!
Exelente explicacion mil gracias por la informacion y saludos desde México....!!!!
gracias tronco. muchas gracias. explicas genial
Gracias!! me sirvio mucho! La verdad tenia varia dudas y me las aclaraste !=)
Que fenomeno, mil gracias!
Excelente tus videos y todo muy bien explicado. ¡Me han ayudado bastante!
Este ha sido un gran vídeo, muchas gracias.
Muchas gracias profesor
Eres un jefe
Mi profe de programación nos tiene viendo tanto sus vídeos que ya siento que Emilio es mi verdadero profe y el que tengo acá es una decoración
No me digas... pues vaya con tu profesor... dame mas datos, que ya tengo curiosidad.
Muchíssimas gracias!
Buenas he seguido todos los videos de aprender C, y en este último decirte que en cadiz suelen poner los ficheros txt de este tipo, si hay alguien de por aquí que este advertido...
Gracias por los tutoriales!!!
una cosa, asi, solo se pueden leer ficheros que solo y solo se hayan escrito antes con dev++ tambien? o yo puedo crear un archivo.txt desde el escritorio introducir algo en el y leerlo con dev++...?
Como le quito los warning correspondientes a las lineas 14 y 28, que aparecen al compilar el programa?
Importa la librería #include
Saludos.
Saludos!! una duda, si me piden guardar una estructura en un fichero, cómo podría hacerlo ? !!
muy bueno
Hola, tengo un problema, y es que estoy compilando en Mac y cuando escribo un archivo desde un programa compilado con la función fopen no me lo escribe en la misma carpeta del programa, siempre se va a la raíz de la carpeta de mi usuario... como puedo arreglar este problema?
No debería ser al revés?
Mientras la condición no se cumpla (estar al final del fichero) sigue ejecutándose. Cuando llega al final, se vuelve VERDAD la condición, por lo que el "mientras no sea verdad" se cumple y sale del bucle.
Para leer con fgets no hace falta hacer ningún bucle, porque se va a guardar todo en un string en una sola tajada, no?
De todas maneras, no viene mal saber lo del !feof.
Gracias por tus videos! :)
El bucle es necesario cuando el fichero tiene saltos de linea ya que la función fgets sólo lee hasta un salto de línea. Saludos.
Loa socumwnroa pdf de dropbox ya no existen verdad?
Quiza no parezca de mucha utilidad debido a las bases de datos, sin embargo esto lo estoy utilizando en mi tesis debido a que tengo que hacer una simulacion matematica y el metodo mas fiable de hacerlo es con lenguaje C, solo un dato curioso, buen video
Si lo que quieres es generar un fichero para luego importarlo en algún lugar, lo mejor es hacerlo con un fichero, sin embargo si lo que quieres es tratar esa información en otro momento dado dentro del programa, lo ideal es una base de datos. Puedes utilizar bases de datos como SQLite en C, aunque si lo que necesitas es potencia, yo daria el salto a Java, ya que con paralelismo, es mucho mas rapido que C.
Un saludo.
@@EmpiezaAProgramar en realidad en mi rama(embebidos) se busca mas bien dar un salto hacia abajo, lenguajes como c, assembler o ya mucho mucho c++.
Java es excelente en procesadores, pero en microcontroladores y demostraciones matematicos consume bastantes recursos.
Pero lo de sqlite si que lo estudiare a detalles, saludos
Hola, si yo quiero leer un archivo y que el programa solo me escriba 9 caracteres(para luego meter un tabulador y que siga escribiendo despues de meter un /t) como se haria?
no entiendo por qué si primero uso
while(fgetc(p)!= EOF)
i++;
hasta ahí bien , cuenta los caracteres del fichero pero después intento usar fgets:
fgets(cad, i+1,p);
puts(cad);
me imprime en pantalla una cosa muy rara, a q se debe? estoy casi seguro q se debe al fgetc pero no entiendo por que
Hola, ¿alguna sugerencia de porque no compila la parte a continuación del codigo?
while(!feof(f)){
fgets(aux2,100,f);
printf("%s",aux2);
ya esta! faltaba lo comentado abajo "#include"
/*
Hola amigo Emilio, muchas gracias por tus videos, no se si aun respondes comentarios de esta serie pero por las dudas te pregunto lo siguiente:
¿Que puede estar fallando en este codigo que no da error de apertura de archivo pero no muestra nada por pantalla?, de hecho luego de pasar el depurador noto que lee el primer caracter
y llega a la condicion EOF y se sale como si el archivo existiera pero estuviera vacio. Y lo creé con el bloc de notas y me asegure que no estuviera abierto.
gracias y saludos amigo.
Bloque 08.01 Ficheros. Lectura y escritura
*/
#include
#include
int main(){
system("color 0A");
//Como abrir un fichero y como leer de el
//Primero se declara un cochero
char aux;
FILE *f;//ahora f es un fichero
//Se parte del principio que existe previamente un fichero para leer de el. El bloc de notas tiene que estar cerrado
//Inicializar la variable con el fichero
f=fopen("ejemplo.txt","r");//No hace falta colocar la direccion porque el archivo esta en la misma carpeta del programa, r es en modo read only
if(f==NULL){
printf("No se ha podido abrir el fichero");
exit(1);
}
//Leer desde el fichero
while(aux != EOF){
//manera 1 de leer con fgetc. Lee un caracter a la vez, hasta que llegue a EOF.
aux=fgetc(f);
printf("%c",aux);//asi lee todos los caracteres del archivo y al llegar a EOF se sale del bucle
}
printf("
");
system("pause");
return 0;
}
Probe el codigo y me anduvo perfecto. Revisa si el archivo se encuentra guardado en la misma carpera que los .c
@@daianaanabelkaneshiro9999 muchas gracias por tomarte el tiempo y la molestia de probar el código. Voy a revisarlo de nuevo. Gracias.
Hola, estoy viendo vuestro video de la funcion rand es C, necesito saber como usarla para generar palabras aleatorias de un fichero, tengo un fichero llamado Animales.txt donde tengo escrito nombres de animales y quiero que escoja una palabra para jugar al ahorcado
F en el chat por el fichero de texto.
entonces fgetc y fgets son lo mismo pero uno es mas eficiente que otro?
Ambos son para leer, pero a veces es conveniente usar el fgets y otras fgetc
Hola, de antemano muchas gracias por tus excelentes vídeos.
Te he estado siguiendo desde el bloque 1.1 y la verdad que muchas felicidades.
Sin embargo, en este vídeo estoy teniendo problemas con mi programa, he hecho todo lo que mencionas y lo único que ocurre es que aparece el msj "No se ha podido abrir el fichero". Ya tengo el archivo .txt en la misma carpeta que el programa y todo pero no se que ocurre. Crees que me puedas ayudar a ver cual es el posible fallo? De antemano GRACIAS!!!!!!!!!!!
Alexin Hdez o se si podre ayudarte, pero copia tu codigo, o al menos la parte encargada de abrir un fichero.
Un saludo.
Alexin Hdez aahhmm se me olvidaba, tambien deberias de pasarle el depurador para ver donde se encuentra exactamente el fallo.
Muchas gracias por tu atención ;)
Ya pasé el depurador, y en la sección de exit(1) se sale y ya no avanza... no se que se puede hacer. Este es mi código:
// 8.1 Lectura de ficheros de texto con fgetc y fgets
// Funciones de lecturas de fichero.txt
#include
int main ()
{
char aux;
char aux2[100];
FILE *f;
f = fopen("1.txt", "r");
if (f == NULL){
printf("No se ha podido abrir el fichero.
");
exit(1);
}
while (aux != EOF){ // empieza a programar EOF (caracter fin de fichero)
aux = fgetc(f);
printf("%c", aux);
}
printf("
");
fclose(f);
f = fopen("1.txt", "r");
if (f == NULL){
printf("No se ha podido abrir el fichero.
");
exit(1);
}
while(!feof(f)){
fgets(aux2, 100, f);
printf("%s", aux2);
}
printf("
");
fclose(f);
system ("pause");
return 0;
}
Te agradeceré muchísimo tu ayuda
Saludos
para usar la funcione exit(); necesitas la librería
Amigo, antes que nada felicitaciones por tus vídeos; son excelentes y prácticos. Todos tus ejemplos me han funcionado pero, este último NO! Y la verdad no sé porque dado que ya revise mi programa mil veces y no le encuentro. Te agradeceré tus comentarios. Ya probé todas las ubicaciones del fichero Ejemplo.txt y sólo me aparece "No se pudo abrir el fichero" Este es mi código:
// Bloque 8.1 Funciones de lecturas de un fichero txt.
#include
#include
int main (){
char aux,aux2[100];
FILE *f;
f = fopen("C:\Ejemplo.txt","r");
if(f == NULL){
printf("No se pudo habrir el archivo.
");
exit(1);
}
while(aux != EOF){
aux = fgetc(aux); // fgetc: caracter x caracter hasta el final.
printf("%c",aux);
}
printf("
");
fclose(f);
f = fopen("C:\Ejemplo.txt","r");
if(f == NULL){
printf("No se pudo habrir el archivo.
");
exit(1);
}
while (!feof(f)){ // ! significa not
fgets(aux2,100,f);
printf("%s",aux2);
}
fclose(f);
system("pause");
return 0;
}
Termino por funcionarte? Imagino que tendrias algo mal en la ruta del fichero...
Amigo, efectivamente la ruta del archivo txt estaba incorrecta. Lo corregí y ya funcionó.
a mi me paso que puse el nombre del archivo de texto como Ejemplo.txt, cuando en realidad solo debia llamarse Ejemplo
A alguien le pasa que si husa fgets en un programa algo largo y con llaves deben poner el fgets 2 veces por que si no, no les hace caso y no lo lee
Ola amigo de empieza a programar tengo una duda en el programa. Mi duda sería en la línea 15 a la 18.
while (aux != EOF){
aux = fgetc (f);
printf ("% c", aux);
}
Porque si tu te fijas estarías preguntando letra por letra en el while entonces nunca terminaría el bucle while debido a que nunca se cumpliría la condición.
Por ejemplo ingresas un E se guarda en la memoria auxiliar pregunta si E != EOF luego ingresa un O y pregunta O != O y al final ingresas un F y pregunta si es F != EOF y por lo que creo que no se cumpliría nunca el while
De antemano gracias
Me da un error en el exit(1) me dice que no esta declarado
+luis alfonso hernandez silva Creo recordar que en un video anterior a este Emilio dijo que #include no era estrictamente necesario porque ya viene "incluido" en el programa, pero que era muy buena costumbre ponerlo. Como cualquier humano, a Emilio se le olvidó ponerlo. Asi que si lo pones no te saldra, aunque ya podias haber investigado un poco tu...
Un saludo.
incluye la biblioteca #include , hay esta esa funcion ... o crea una igual ...
pero como constumbre de un buen programador tienes que incluirla pro que te toparas con otros compiladores que tendras que hacerlo, otra cosa el compilador te ayuda pero el que programa eres tu ....
Imposible, no logro hacer que funcione, siempre me pone que no se ha podido abrir fichero, lo guardo en la misma carpeta todo igual q el video
me pasa igual
Ojo de no poner ejemplo.txt tienes que que poner nuevo.fichero de texto y solo poner el nombre. El txt lo pone automáticamente window.
@@EnBuenChileno24 GRACIAS BUEN HOMBRE
En 2023 aprendiendo ficheros y me confunde mucho estos temas
No sería lógico primero enseñar como crear un fichero, porque el programa que ha creado no funciona si no hay fichero txt.
Claro,por eso lo comento desde el principio, concretamente en 2m20s
si no te anda el programa, acordate de agregar la libreria stdlib.h