Ciao a tutti, ho fatto una piccola funzione per rinominare un file, se presa singolarmente funziona, ma qquando la metto qui in questo programmino non funziona, mi dice "Si è verificato un errore nella rinomina di....", come mai?

codice:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

void menu(void);
void ren(void);

int scelta;

int main()
{
   
   char v_nome[80], n_nome[80];
   struct tm *ptr;
   time_t lt;
	lt=time(NULL);
   ptr=localtime(&lt);
   printf("\n\n");
   printf(asctime(ptr));

	while(scelta!=9) {

   	menu();
      	switch(scelta) {
         	case 1:
            	printf("\nOperazione 1");
               system("cls");
            break;
            .................
                case 4:
            	ren();
               
            break;
            case 5:
               printf("dsfsd");
               system("cls");
               
               ............                 

                 default:
            	printf("\nOperazione non valida\n");
               system("pause");
               system("cls");
            break;
         }
      }
   return 0;
}
void menu(void) {
	printf("\n+-------------------+\n");
	printf("| Stupid Editor 0.1 |\n");
   printf("+-------------------+\n");
	printf("\n1- Crea nuovo file");
   printf("\n2- Leggi file esistente");
   printf("\n3- Unisci due file");
   printf("\n4- Rinomina file");
   printf("\n5- Elimina file");
   printf("\n6- Cambia modi del file");
   printf("\n7- Credit");
   printf("\n0- Termina programma");
   printf("\n\n");
   printf("Scegli operazione da compiere: ");
   scanf("%d", &scelta);
}

void ren(void) {

   	printf("Inserire il nome attuale del file: ");
	gets(v_nome);
	printf("Inserire il nuovo nome del file: ");
	gets(n_nome);
	
	if(rename(v_nome, n_nome)==0)
		printf("%s è stato rinominato %s\n", v_nome, n_nome);
	else
		fprintf(stderr, "Si è verificato un errore nella rinomina di %s\n", v_nome);
	
}