Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Cambiar nombre de fichero

Estas en el tema de Cambiar nombre de fichero en el foro de C/C++ en Foros del Web. Hola. Tengo un problema, quiero cambiar el nombre de un archivo a uno nuevo, pero sin saber el nombre de ese archivo, me explico: Quiero ...
  #1 (permalink)  
Antiguo 06/10/2012, 18:24
 
Fecha de Ingreso: octubre-2012
Ubicación: Colombia/Bucaramanga
Mensajes: 7
Antigüedad: 11 años, 6 meses
Puntos: 0
Cambiar nombre de fichero

Hola.

Tengo un problema, quiero cambiar el nombre de un archivo a uno nuevo, pero sin saber el nombre de ese archivo, me explico:

Quiero que al abrir el programa, busque, en el mismo directorio de donde se abrió todos los archivos, para cambiarles el nombre, por uno similar, solo cambiándole los espacios por un guion bajo(_).

El problema es que no se como cambiarle el nombre sustituyéndole los espacios.

Tengo esto:

Código PHP:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <dirent.h>


void CambiarName()
{
    
charold;
    
char* New;
    
DIR *dp;
    
struct dirent *ep;
    
dp opendir ("./");
    if (
dp != NULL)
    {
        while (
ep readdir (dp))
        {
            
old ep->d_name;
            New = 
ep->d_name;
            for(
int a strlen(New); a--)
            {
                if(New[
a] == ' ') New[a] = '_';

            }
            
rename(old,New);
            
puts(old);
            
puts(New);
        }
        (
voidclosedir (dp);
    }
}

int main()
{
    
CambiarName();
    return 
0;

El problema es que no cambia, pues el old, y el New se renombran a lo mismo, pero yo solo hago que se renombre el New, no el old.

¿Que tengo mal?¿Cual es la solucion?
  #2 (permalink)  
Antiguo 07/10/2012, 10:57
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Cambiar nombre de fichero

"...pero yo solo hago que se renombre el New, no el old..."

No, New y old son un mismo puntero a ep->d_name, de forma no puedes modificar ni New ni old porque no son nada; todo lo que apliques sobre New o sobre old se aplica realmente sobre ep->d_name. Tienes que usar una nueva cadena de texto para crear la ruta modificada.

Saludos
vosk
  #3 (permalink)  
Antiguo 07/10/2012, 13:43
 
Fecha de Ingreso: octubre-2012
Ubicación: Colombia/Bucaramanga
Mensajes: 7
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Cambiar nombre de fichero

Oh, ya veo, muchas gracias, al usar string en ves de char* ya me sirvió
  #4 (permalink)  
Antiguo 08/10/2012, 12:23
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Cambiar nombre de fichero

Ok, habia asumido que estabas en C y me refería a usar igualmente char* pero con memoria dinamica. Si lo has solucionado con strings pues perfecto.

Otra cosa, no necesitas la variable 'old' porque el nombre no modificado ya lo tienes en ep->d_name

Saludos
vosk

Etiquetas: c++, rename, renombrar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:32.