Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [C++]rinominare file di testo

    Salve raga, dovrei poter rinominare un file di testo.txt


    Uso la seguente sintassi, includendo la libreria #include <stdio.h> :
    codice:
    char oldname[]="FileApp1.txt";
    char newname[]="prova.txt";
    int x = rename(oldname, newname );    
    cout << x << endl;
    getchar();
    getchar();
    Ma non mi funziona, il file FileApp1.txt si trova nella stessa directory del programma.

    La funzione rename, se va a buon fine, deve restituire x = 0
    mentre a me restituisce x = -1

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dipende come lo esegui, se dall'IDE (quale IDE) o da console. La cartella di lavoro è diversa e quindi se lo aspetta in posizioni diverse.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ok, in questomodo mi funziona:
    codice:
      int result;
      char oldname[] ="aaa.txt";
      char newname[] ="bbb.txt";
      result= rename( oldname , newname );
      if ( result == 0 )
        puts ( "File successfully renamed" );
      else
        perror( "Error renaming file" );

    Ora il problema e' un altro.
    Io non devo specificare direttamente nel codice il nome con cui devo rinominare il vecchio file.
    cioe:
    char newname[] ="bbb.txt";

    ma poiche' questo codice e' in una procedura, e a questa procedura gli passo una stringa.
    char newname deve avere il nome della stringa che gli passo.

    Come devo fare?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non ho capito ... e il problema prima dov'era? Nella cartella? Il codice è uguale a quello di prima ...

    Per il resto, usa una variabile stringa ... non vedo il problema ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    il problema era nella cartella.


    Ora invece,
    io dovrei fare:
    codice:
    void CancFisicaFileP(string NomeFile )
    {
    ..
    ..
    ..
      int result;
      char oldname[] ="aaa.txt";
      char newname[] =NomeFile; // errore
      result= rename( oldname , newname );
      if ( result == 0 )
        puts ( "File successfully renamed" );
      else
        perror( "Error renaming file" );
    }
    ma mi da errore:
    In member function `void File::CancFisicaFileP(std::string)':

    initializer fails to determine size of `newname'

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma l'argomento (che è una stringa C++) devi passarla direttamente alla rename, non in quel modo.

    Ed essendo una stringa del C++, dovrai anche ottenere la versione C della stessa tramite c_str, ovvero

    result= rename( oldname, NomeFile.c_str() );
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    ehm si infatti cosi' funziona, ma io prima l'avevo provato e non mi andava.


    bho
    grazie ciao

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Salvatore_91
    ehm si infatti cosi' funziona, ma io prima l'avevo provato e non mi andava.

    L'avevi provato cosi'? Impossibile ...

    bho
    grazie ciao
    Nell'informatica non esiste il concetto di "bho" ... o funziona o non funziona e c'e' un motivo.

    Prego
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Originariamente inviato da oregon
    Nell'informatica non esiste il concetto di "bho" ... o funziona o non funziona e c'e' un motivo.
    A meno che non ti capiti un Heisenbug come quello contro cui sto sbattendo la testa da un po'...
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da MItaly
    A meno che non ti capiti un Heisenbug come quello contro cui sto sbattendo la testa da un po'...
    Bello ... apri un nuovo thread in questo forum ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.