Título: [AYUDA EN C] Leer texto del teclado y guardar en una variable llamada char *str Publicado por: soundevice en 28 Septiembre 2016, 22:44 pm Hola Queridos colegas programadores. Me llamo Gabriel y soy estudiante de Sistemas Especializado en Java. Hoy me pidieron entregar un ejercicio en el que se debe programar en C, y no nos explicaron eso en toda la cursada. Es decir, hay que arreglarselas con Internet.
La consigna es que lo compile en la consola de Ubuntu, y el usuario ingrese el nombre de un archivo que este en el directorio actual, y depende su extensión (jpg, mp3 o txt) le cambiara el nombre (de txt a no me acuerdo, supongamos que a mp3, y asi con cada uno cambiarlo a otra extension (en el código queda claro)). Después de renegar mucho y buscar equivalentes a funciones de java en c para poder armar el código (que parece sencillo, pero venir de java a c, es complejo, muchas cosas son muy distintas, que no te mientan) pude lograr que el código funcione. Haga lo que tenga que hacer. El código anda. Por ejemplo, creo un archivo en un directorio, el archivo es ejemplo.txt Después en mi código defino a char *str= ejemplo.txt y hace el cambio de extensión exitosamente. Pero ahora lo que quiero es que char *str se defina por lo que el usuario le pase por teclado. Intente con las siguientes, y me lanzan este tipo de errores: main ( char *argv) Me tira violacion de segmento scanf("%s",str); No me sirve. Ingreso el dato y me devuelve violación de segmento (core) fgets (str, strlen(str), stdin) == NULL;Ingreso el dato y me devuelve violacion de segmento (core) /gets(str) Me dice que no esta definida gets Nose me ocurre que hacer para arreglarlo. Es lo único que falta. Lo invito a que defina a char *str con algun archivo suyo y haga la prueba, vera que funciona. Lo único que me falta es que se le asigne la cadena que ingresa el usuario. Sé que las funciones scanf y gets no funcionan, por que en mi código no definí a los chars con un número de tamaño. Investigando vi que todos ya saben de antemano cuanto mide su cadena y la definen. Ejemplo, char *prueba[3]= "ere". Pero yo no se la longitud del nombre del archivo que va a ingresar el usuario. y probé definiendo a char *str con diferentes números, pero haciendo eso, desde la función rename hasta la de strlen y todas la que interactúan con mi cadena str, me dan el error: la función pide un argumento tipo char * y usted le pasa un argumento char ** Si me pueden ayudar a ingresar el dato por teclado y quede guardado en la variable str, se lo s agradeceré muchísimo! Acepto cualquier sugerencia útil! Y desde ya gracias por su tiempo amigos! Código: Código: #include <stdio.h> Título: Re: [AYUDA EN C] Leer texto del teclado y guardar en una variable llamada char *str Publicado por: engel lex en 28 Septiembre 2016, 22:59 pm veo que no estás acustumbrado a trabajar con tan bajo nivel... te explico...
cada vez que hacer Código: char * algo tienes 2 caminos... o asignas memoria dinamicamente (malloc, calloc) o predefines el char a lo más largo posible... no importa que el char tenga más espacios asignados de lo necesario, las funciones sobre strings (printf, strlen, etc) se limitan a leer hasta conseguir un caracter de terminación ('\0') por que funciona bien esto? Código: char * algo = "otra cosa"; cuando el compilador hace su trabajo, revisa que tiene que apartar el espacio de memoria y así lo hace Título: Re: [AYUDA EN C] Leer texto del teclado y guardar en una variable llamada char *str Publicado por: soundevice en 29 Septiembre 2016, 02:02 am veo que no estás acustumbrado a trabajar con tan bajo nivel... te explico... cada vez que hacer Código: char * algo tienes 2 caminos... o asignas memoria dinamicamente (malloc, calloc) o predefines el char a lo más largo posible... no importa que el char tenga más espacios asignados de lo necesario, las funciones sobre strings (printf, strlen, etc) se limitan a leer hasta conseguir un caracter de terminación ('\0') por que funciona bien esto? Código: char * algo = "otra cosa"; cuando el compilador hace su trabajo, revisa que tiene que apartar el espacio de memoria y así lo hace Gracias, veré si lo puedo hacer. Sí, no estoy acostumbrado a un lenguaje de bajo nivel u.u Título: Re: [AYUDA EN C] Leer texto del teclado y guardar en una variable llamada char *str Publicado por: soundevice en 29 Septiembre 2016, 02:45 am veo que no estás acustumbrado a trabajar con tan bajo nivel... te explico... Funcionó , gracias!cada vez que hacer Código: char * algo tienes 2 caminos... o asignas memoria dinamicamente (malloc, calloc) o predefines el char a lo más largo posible... no importa que el char tenga más espacios asignados de lo necesario, las funciones sobre strings (printf, strlen, etc) se limitan a leer hasta conseguir un caracter de terminación ('\0') por que funciona bien esto? Código: char * algo = "otra cosa"; cuando el compilador hace su trabajo, revisa que tiene que apartar el espacio de memoria y así lo hace |