Visualizzazione risultati 1 fino 20 di 20

Discussione: posizionamento del puntatore

  1. #1
    Guest

    Predefinito posizionamento del puntatore

    avrei bisogno, grazie a php, di far muovere automaticamente il puntatore all'interno del mio file.txt. allora, ho provato con
    Codice PHP:
    fseek($fp, 10);
    ma non mi funziona affatto, e da quello che ho capito non funziona a causa dell'apertura del file con la funzione fopen
    Codice PHP:
    $fp = fopen('index.txt', 'a');
    e quindi non so come risolvere il mio problema. qualcuno mi saprebbe aiutare??? grazie mille!!!

  2. #2
    Guest

    Predefinito

    Perchè dici che è colpa della funzione fopen?
    Da cosa l'hai dedotto?


    Ciao!

  3. #3
    Guest

    Predefinito

    se non sbaglio da questo articolo (questo), ma forse ho interpretato male quello che c'êra scritto... sta il fatto che non mi funziona... :D

  4. #4
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Se devi aprire un file in lettura+scrittura ti conviene usare 'r+'. Se poi devi aggiungere qualcosa in fondo basta fare fseek($fp, 0, SEEK_END).


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  5. #5
    Guest

    Predefinito

    Ma ti viene restituito qualche errore?
    Quale risultati ottieni?

    Prova con la modalità 'r' anzichè 'a'


    Ciao!

  6. #6
    Guest

    Predefinito

    la cosa strana è che la modalità r(+), se per esempio avevo un file di testo con 150 caratteri e provavo ad aggiungergli un testo di 50, lui sostituiva tanti caratteri precedenti quanti quelli che volevo inserire, così ho penato semplicemente di aprirlo in a(+) e spostare il puntatore... inoltre questo fatto di spostare il puntatore mi serve anche in futuro per muovermi all'interno e raccogliere dati, quindi se non riesco a farlo funzionare sono fregato... ma la sintassi è giusta, no? qualcuno sa perchè non funziona o se a lui si? grazie xD

  7. #7
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Fidati che funziona, sono decenni che in C si usa lo stesso sistema.

    la cosa strana è che la modalità r(+), se per esempio avevo un file di testo con 150 caratteri e provavo ad aggiungergli un testo di 50, lui sostituiva tanti caratteri precedenti quanti quelli che volevo inserire,
    Ma hai fatto fseek in fondo al file prima di scrivere?


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  8. #8
    Guest

    Predefinito

    ho scritto questo:

    Codice PHP:
    $fp = fopen('index.txt', 'a');
    fseek($fp, 0);
    fwrite($fp, $inc);
    fclose($fp);
    va bene, no?

  9. #9
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    va bene, no?
    No, non va bene per niente! Con 'a' apri il file e il puntatore viene posto alla fine del file, ma tu lo riposizioni all'inizio, per questo ti sovrascrive il contenuto esistente!


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  10. #10
    Guest

    Predefinito

    no, così semplicemente non mi conta la funzione fseek, e mi apre il file e aggiunge il mio testo alla fine, io voglio puntare il puntatore all'inizio, ma con a non c?e il problema della sovrascrittura,,, comunque come dovrei fare?? grazie

  11. #11
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    se apri un file, posizioni il cursore all'inizio e ci scrivi dei dati, questi sovrascrivono sempre il contenuto esistente del file. Non c'è un modo diretto di aggiungere dati all'inizio, nel con w+, r+, o a+-*/. Devi riscrivere tutto il file, oppure cambiare metodo ed aggiungere in fondo.

  12. #12
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Aspetta aspetta, non mi dire che vuoi aggiungere del testo in testa al file?


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  13. #13
    Guest

    Predefinito

    ehhh...giÀ... ma come mai??? qualÊ questo problema? così volevo inserire i commenti del file in alto e non in basso.... per farli stare più leggibili...

  14. #14
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    non è un problema, è il modo in cui funzionano i file. Metti i commenti in fondo e poi inverti l'ordine quando li visualizzi.

  15. #15
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Il fatto di poter ingrandire un file solo aggiungendo dati in coda è una questione tecnica e pratica. Se vuoi mantenere la struttura che hai scelto devi creare un nuovo file, metterci i nuovi dati, aprire il vecchio file e accodare i vecchi dati al nuovo file, cancellare il vecchio file, chiudere e rinominare quello nuovo.
    Oppure carichi in memoria i dati del vecchio file e lo ricrei ex-novo (con 'w') scrivendo prima i nuovi dati e poi quelli vecchi.

    Per evitare tutte queste storie di solito si aggiungono i dati in coda.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  16. #16
    Guest

    Predefinito

    okay, allora per risolvere il problema salverò il file in una variabile, e poi lo riscriverò prima con i nuovi dati, poi con quelli precedenti. ho ancora però due domande:

    1) come faccio ad immagazzinare il vecchio file in una variabile?? ovviamente include non mi può aiutare perchè stampa già i risultati, quindi non so da dove partire.

    2) se comunque in un file devo andare al 6° carattere e leggerne 5 e poi immagazzinarli in una variabile, posso usare la sintassi che ho postato prima però cosi:

    Codice PHP:
    $fp = fopen('index.txt', 'a');
    fseek($fp, 6);
    $info = fread($fp, 5);
    fclose($fp);
    ??? :D

  17. #17
    Guest

    Predefinito

    Codice PHP:
    <php
    $f
    = "file.txt";
    $var = file_get_contents($f);//in $var ho il contenuto del file
    $fp = fopen($f, "w");
    fputs($fp, $nuovi_dati.$var);
    fclose($fp);
    ?>

  18. #18
    Guest

    Predefinito

    benebene, così ho la risposta alla domanda uno!!! :D fputs è lo stesso di fwrite, no?

    qualcuno sa invece per la domanda due? grazie cmq gabry!

  19. #19
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Se devi solo leggere usa 'r'. Spenderei anche un paio d'ore per studiarmi le funzioni filesystem di PHP.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  20. #20
    Guest

    Predefinito

    sisi, le funzioni le so, scusate per il copia e incolla, ma mi premeva sapere se il fseek e il fread sono giusti... :D

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •