Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: nolasco281 en 6 Septiembre 2014, 11:10 am



Título: problema con las extensiones
Publicado por: nolasco281 en 6 Septiembre 2014, 11:10 am
Hola como estan.

Mi duda es la siquiente.

Tengo un archivo .txt y uno .bin.

El usuario debe de elegir el .txt pero debe de abrirse el .bin alguna idea de como hacer esto.

se me a ocurrido con un if.

Código
  1. if(extensión termina.txt)
  2. {
  3.    //Rutas iguales solo deberia de cambiar la extensión.
  4.    .txt a .bin //Eso es lo que no se como hacer
  5.   habra el .bin
  6. }

La ruta del .txt es la misma que el .bin pero como le indico que me habra la ruta del .bin cuando el usuario eligio la del .txt.

espero haberme explicado

saludos.



Título: Re: problema con las extensiones
Publicado por: rir3760 en 6 Septiembre 2014, 16:07 pm
No entiendo el problema. ¿Porque no simplemente pides el nombre sin extensión?

Agregar a continuación la extensión es fácil, formas hay varias por ejemplo utilizando strcat (prototipo en <string.h>):
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(void)
  6. {
  7.   char nombre[FILENAME_MAX];
  8.  
  9.   puts("Indica el nombre:");
  10.   scanf("%s", nombre);
  11.   printf("Nombre: %s\n", nombre);
  12.  
  13.   strcat(nombre, ".txt");
  14.   printf("Nombre con extension: %s\n", nombre);
  15.  
  16.   return EXIT_SUCCESS;
  17. }

Un saludo


Título: Re: problema con las extensiones
Publicado por: nolasco281 en 6 Septiembre 2014, 20:27 pm
Hola como estan.

Gracias por responder

Si entiendo lo que me indicas, y tiene sentido pedir solo la ruta del archivo sin extensión para manipular la extensión que se desee ya sea .txt o bin.

Pero uso un tipo de filechooser donde el usuario elige el archivo .txt y esa ruta se guarda en un textbox el problema que tengo es que al usar un filechooser me guarda la extensión tambien.

se me ocurrio una idea al ver el codigo que pusiste.

crear una variable que almacene la ruta del .bin y cuando se elija uno archivo que finalice con .txt llame a la variable con la ruta del .bin

Si se les ocurre otra solucion se los arradeceria

Saludos y gracias


Título: Re: problema con las extensiones
Publicado por: rir3760 en 6 Septiembre 2014, 21:18 pm
En ese caso lo primero que debes hacer es revisar la documentación de la biblioteca que estas utilizando para saber que funciones de manejo de archivos provee, buscando por supuesto una función para obtener solo el nombre, es la forma mas fácil de resolver el problema.

Si por alguna extraña razón no se incluye esa función y tienes algo como "archivo.txt" nada impide sustituir los últimos tres caracteres con strcpy:
Código
  1. char nombre[] = "archivo.txt";
  2. size_t len = strlen(nombre);
  3.  
  4. /* ... */
  5.  
  6. printf("Nombre: %s\n", nombre);
  7. strcpy(nombre + len - 3, "xyz");
  8. printf("Nombre: %s\n", nombre);

Un saludo


Título: Re: problema con las extensiones
Publicado por: nolasco281 en 7 Septiembre 2014, 23:37 pm
Hola como estan.

Gracias.

Sos un genio tenias razon biblioteca que estoy usando tienen dos funciones una llamada getselectedPath y otra llamada getselectedname. y en efecto solo me toma la ruta sin su extensión.  ;-)

Tambien funciono quitando los ultimos cuatro caracteres incluyendo el punto. muy bueno.  ;-)

mil gracias saludos.