SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: inmaortigosa en Miércoles 20 de Mayo de 2009, 17:02

Título: Copiar nombre de un fichero eliminando la extensión
Publicado por: inmaortigosa en Miércoles 20 de Mayo de 2009, 17:02
hola.
Estoy modificando un código. En el código leo dos archivos de datos datos.dat y datos-1.dat, con cada uno de estos archivos hago unos cálculos, y los escribo en otro fichero. El nombre datos.dat lo paso a Name
ifstream file (Name);

   char fileout[1024];
   
   sprintf(fileout,"%s.out",Name);
   

   ofstream out(fileout);
Así que el archivo de resultados me queda como datos.dat.out y el programa con el que leo los datos no me reconoce un archivo con dos extensiones, de manera que quiero que el archivo de salida sea datos.out.
Sé que hay una orden para eliminar las extensiones, pero no la encuentro. Alguien me puede ayudar???

Gracias!!!!!!
Título: Re: Copiar nombre de un fichero eliminando la extensión
Publicado por: m0skit0 en Miércoles 20 de Mayo de 2009, 17:29
Sólo tienes que recorrer la cadena y eliminar todo lo que haya a partir del último punto. Para ello puedes empezar por el final de la cadena y rellenar con ceros hasta encontrar el punto (que también debes sustituír con cero).
Título: Re: Copiar nombre de un fichero eliminando la extensión
Publicado por: Geo en Jueves 21 de Mayo de 2009, 02:15
Una forma muy fácil usando strtok

Código: C
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main() {
  5.     char nombre[] = "datos.dat";
  6.     printf( "nombre: %sn", nombre );
  7.  
  8.     strtok( nombre, "." );
  9.     printf( "nombre: %sn", nombre );
  10.  
  11.     return 0;
  12. }
  13.  
Título: Re: Copiar nombre de un fichero eliminando la extensión
Publicado por: inmaortigosa en Jueves 21 de Mayo de 2009, 08:33
Gracias!!!!
Título: Re: Copiar nombre de un fichero eliminando la extensión
Publicado por: Leo_Gutierrez en Jueves 21 de Mayo de 2009, 17:21
O hacer algo como esto:
Código: C
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     char filename[] = "file.txt";
  5.     for(signed int i = 0; filename[i] != ''; i++)
  6.     {
  7.         if(filename[i] == '.')
  8.         filename[i] = '';
  9.     }
  10.     printf("%s", filename);
  11.     return 0;
  12. }
  13.  
  14.