Título: Problema al abrir binario en C Publicado por: juanperez3214 en 4 Febrero 2012, 22:34 pm Saludos, porfavor si me pudieran ayudar con un problemita en este pequeno codigo #include <stdio.h> #include <stdlib.h> int openbin(void); int main(){ openbin(); return 0; } int openbin(void){ FILE *pfile; char namebin[50]; printf("Name:\n"); fgets(namebin,sizeof(namebin), stdin); if ((pfile = fopen(namebin, "rb"))== NULL) { printf("Couldn't open the file\n"); exit(1); } printf("The file was opened successfully\n"); return 0; } lo que pasa es que cuando introdusco el name del archivo a abrir este nunca es abierto(obvio, estando el archivo en la misma carpeta), no se en que pueda estar fallando porfavor alguien que me de luz sobre el tema, Gracias Título: Re: Problema al abrir binario en C Publicado por: do-while en 4 Febrero 2012, 22:40 pm ¡Buenas!
fgets, te esta leyendo la pulsacion del intro. Eliminalo de la cadena y ya lo tienes: http://www.cplusplus.com/reference/clibrary/cstdio/fgets/ Por cierto, si no vas a usar el fichero, cierralo antes de salir de la funcion. ¡Saludos! Título: Re: Problema al abrir binario en C Publicado por: juanperez3214 en 4 Febrero 2012, 23:10 pm he hecho lo que me dices pero sigue igual. Tambien he intentado con gets que no toma el intro pero tampoco
Título: Re: Problema al abrir binario en C Publicado por: DickGumshoe en 4 Febrero 2012, 23:14 pm ¿Seguro que poniendo esto no te va?
Código
Si es eso lo que has puesto, cuando te pida el nombre del archivo en la consola, pon el nombre del fichero seguido de .txt (o la extensión que tenga). Título: Re: Problema al abrir binario en C Publicado por: juanperez3214 en 4 Febrero 2012, 23:16 pm estoy en linux, no se si eso importe
Título: Re: Problema al abrir binario en C Publicado por: DickGumshoe en 4 Febrero 2012, 23:20 pm Como dije en el otro mensaje. ¿Has probado ya a poner en la consola el nombre del archivo seguido de .txt o la extensión que tenga tu archivo?
Si es así, no se me ocurre qué puede fallar. Yo uso Windows, pero creo (aunque no estoy seguro) que en este caso es igual. Título: Re: Problema al abrir binario en C Publicado por: juanperez3214 en 4 Febrero 2012, 23:28 pm Hombre ya he intentado de todo pero no funca, lo de gets es en forma de prueba pues esta funcion es muy peligrosa
Título: Re: Problema al abrir binario en C Publicado por: DickGumshoe en 4 Febrero 2012, 23:30 pm A mí con ese mismo código (el que puse yo, que era el tuyo pero con gets en vez de fgets), me he funcionado bien. Poniendo hola.txt (mi archivo se llama hola). Será entonces porque usas Linux y yo Windows...
Título: Re: Problema al abrir binario en C Publicado por: ~ en 5 Febrero 2012, 00:38 am Este programa funciona bien para esa tarea hasta ahora. Toda la información está en los comentarios.
Simplemente usa una función más, que se limita a buscar el carácter '\r' o '\n' y lo modifica directamente en la cadena original, cambiándolo por un carácter nulo '\0'. Ni siquiera se necesita malloc para ese pequeño ajuste de cadena. Código: #include <stdio.h> //printf, fopen, fgets, fclose Título: Re: Problema al abrir binario en C Publicado por: juanperez3214 en 5 Febrero 2012, 01:10 am muchas gracias por la ayuda, te haz pasado pero sigo teniendo el problema, siempre me va a "ERROR: no se pudo abrir.....". no se si estoy haciendo algo mal pero no los abre.
aunque sigo con el problema aprecio mucho la ayuda gracias Título: Re: Problema al abrir binario en C Publicado por: Xandrete en 5 Febrero 2012, 12:00 pm ¿Has probado a incluir errno.h y a usar perror para ver exactamente que problema tienes? Cuando fopen te devuelve NULL no quiere decir necesariamente que no se pueda abrir el archivo porque no se encuentra. También puede ser un problema de permisos. Estoy en Linux y me va perfecto este código en el que sólo he cambiado el gets por el scanf, lo cual no tiene nada que ver (con el gets también me va bien):
Código
Saludos Título: Re: Problema al abrir binario en C Publicado por: juanperez3214 en 5 Febrero 2012, 19:20 pm he intentado con perror y sale esto "fopen fallo por : No such file or directory" segun esto no lo encuentra pero el archivo esta en la misma capeta, tambien he intentado con la ruta pero tampoco
Título: Re: Problema al abrir binario en C Publicado por: juanperez3214 en 5 Febrero 2012, 19:23 pm y lo de los permisos no creo ,tiene permiso de todo y ademas ejecuto el programa como sudo
Título: Re: Problema al abrir binario en C Publicado por: Xandrete en 6 Febrero 2012, 00:41 am ¿?
A ver. ¿Estás seguro de que el archivo de texto está en el mismo directorio que tu programa o de que usas la ruta absoluta o relativa correcta? No ha lugar a errores con este código. Comprueba que estás introduciendo correctamente el nombre del archivo, respetando mayúsculas y minúsculas y con la extensión apropiada (en Linux es necesario que introduzcas el nombre del archivo exacto). Si acaso, introduce un printf para imprimir la cadena en que guardas el nombre del archivo y así comprobar que se guarda correctamente y que coincide exactamente con el nombre del archivo de texto. En última instancia, dinos la ruta del ejecutable (con los nombre incluidos), la ruta del fichero de texto y la entrada de datos que efectúas cuando ejecutas el programa. Y por cierto, no hace falta que ejecutes el programa con sudo. Usa sudo lo menos posible. Saludos Título: Re: Problema al abrir binario en C Publicado por: juanperez3214 en 6 Febrero 2012, 01:05 am Bueno ya he solucionado el problema aunque no tengo ni idea de porque se arreglo. lo unico que hice fue mover el ejecutable y el archivo a un nuevo directorio y funciono.
Muchas gracias a todos por las respuestas Título: Re: Problema al abrir binario en C Publicado por: juanperez3214 en 6 Febrero 2012, 01:22 am Me acabo de dar cuenta que los archivos con nombre numerico no los abre, estaba intentando con un archivo llamda "311" y intente con un archivo con nombre "hola" y lo abrio perfectamente
Título: Re: Problema al abrir binario en C Publicado por: Xandrete en 6 Febrero 2012, 09:27 am ¿Por ser un nombre numérico? Extraño. A mí con nombres numéricos me va perfecto. Entre las recomendaciones a la hora de dar nombre a un fichero en sistemas Unix no figura "No dar nombres numéricos" (de hecho, los directorios asociados a los procesos en /proc/ tienen como nombres el PID de los procesos, que son totalmente numéricos). Me parece raro. Bueno, ya has solucionado en parte tu problema, así que no sé si te apetece seguir investigando. ¿Has probado otro nombre numérico que no sea 311? Tal vez haya algún fichero en alguno de los directorios del PATH que se llame exactamente igual, aunque no creo que sea esto lo que pase, porque en ese caso lo que suele ocurrir es que se le dé prioridad a ese fichero. Para estar seguros, podrías introducir ./311 en vez de 311 a secas y ver si te sigue dando la matraca.
¡Saludos! |