problema con las extensiones

Iniciado por nolasco281, 6 Septiembre 2014, 11:10 AM

0 Miembros y 1 Visitante están viendo este tema.

nolasco281

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 (cpp) [Seleccionar]
if(extensión termina.txt)
{
   //Rutas iguales solo deberia de cambiar la extensión.
   .txt a .bin //Eso es lo que no se como hacer
  habra el .bin
}


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.

Lo que se puede imaginar... se puede programar.

rir3760

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>):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
   char nombre[FILENAME_MAX];
   
   puts("Indica el nombre:");
   scanf("%s", nombre);
   printf("Nombre: %s\n", nombre);
   
   strcat(nombre, ".txt");
   printf("Nombre con extension: %s\n", nombre);
   
   return EXIT_SUCCESS;
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

nolasco281

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
Lo que se puede imaginar... se puede programar.

rir3760

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:
char nombre[] = "archivo.txt";
size_t len = strlen(nombre);

/* ... */

printf("Nombre: %s\n", nombre);
strcpy(nombre + len - 3, "xyz");
printf("Nombre: %s\n", nombre);


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

nolasco281

#4
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.
Lo que se puede imaginar... se puede programar.