Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [C] cancellare i-esima riga txt

    Salve a tutti sono nuovo del forum ma vi seguo da parecchio mi chiamo Fabio (non ho trovato una sezione dove presentarmi), sto cercando una funzione che mi permetta di cancellare un intera riga di un txt, sapendo il numero della riga, e sostituendola con un altra, credo di aver capito che l'unico modo è la creazione di un altro txt, ma come faccio a dire leggi e copia sul nuovo txt "i" righe poi scrivi questo e poi leggi e copia le ultime restanti righe? le righe sono di lunghezza variabile è questo che non mi fa usare "fseek" il file txt creato è tipo questo :
    codice:
    <H1><P ALIGN="CENTER">linkutili<H1>
    <h5><P ALIGN="CENTER">titololink3<h5>
    <h5><P ALIGN="CENTER">titololink1<h5>
    <h5><P ALIGN="CENTER">titololink2<h5>
    Grazie in anticipo

  2. #2
    Leggi una riga alla volta, contandole e riscrivendole nell'altro file. Quando arrivi all'n-esima riga invece di scrivere quello che hai letto scrivi il testo da sostituire. Procedi poi a copiare tutto il resto fino alla fine del file.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    ok grazie stavo pensando anche io alla stesa soluzione, ma come faccio a dire fermati a fine rigo?

  4. #4
    Usa la funzione fgets per leggere una riga alla volta. Occhio che devi essere pronto al caso in cui il tuo buffer non basta per leggere l'intera riga e quindi devi leggere la riga in più riprese.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Ok ci sono riuscito, riesco a copiare il file con un ciclo for e con fgets, ma il problema è che non riesco a cancellare il file vecchio, è così che dovrei fare?
    codice:
    fp1=fopen("C:\\Users\\Home\\Desktop\\link.txt","r");
    fpcopia=fopen("C:\\Users\\Home\\Desktop\\copialink.txt","w");
    //modifico e faccio quello che devo fare
    fclose (fp1);
    fclose (fpcopia);
    remove("C:\\Users\\Home\\Desktop\\link.txt");
    rename("C:\\Users\\Home\\Desktop\\copialink.txt","C:\\Users\\Home\\Desktop\\link.txt");
    sbaglio qualcosa? perchè facendo così non mi cancella il file link.txt invariato e non mi cambia il nome del secondo file
    Scusami in ogni caso per il disturbo ma sono un noob XD

  6. #6
    Che compilatore stai usando?
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Microsoft Visual C++ 2010 Express

  8. #8
    Verifica il valore restituito da ciascuna delle funzioni e il valore di errno dopo ciascuna chiamata.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    ok trovata la soluzione, era un altro il problema non arrivava proprio lì perchè avevo sbagliato un controllo con if, l'ho capito mettendo dei systempause strategici XD usciva dall'else senza passare mai dal corpo dell'if , allora ho risolto con un goto: grazie mille

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Hai risolto con un "goto" ? Non mi pare una buona soluzione ... sicuramente puoi fare senza ... (e sarebbe molto meglio) ...
    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.