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

    problema lettura file con c

    Salve ragazzi sono nuovissimo del c (Lo studio da ciraca 1 ora), però sono un programmatore php.
    Ho fatto qualke linea di codice però nn mi funziona:



    int main(int argc,char **argv,char **envp)
    {
    #define BUFSIZE 102
    int i;
    size_t bytes;
    char temp[BUFSIZE];
    FILE *in;
    printf("Hai passato %i parametri\n", argc-1);
    for(i=1;i<argc;i++){
    printf("Parametro %i :",i);
    printf("%s\n",argv[i]);
    }
    in=fopen("argv[1]","r+");
    while(bytes = fread(temp,sizeof(char),BUFSIZE,in)){
    printf("%s\n",temp);
    }
    }

    questo programma dovrebbe stamparmi i parametri ke gli invio e poi deve leggere e stampare a video il file ke gli invio come primo parametro.
    perkè nn funziona???
    Se qualcuno vuole aiutarmi mi spiega un pò kome funziona fread() e fwrite().

  2. #2
    Utente di HTML.it L'avatar di edriv
    Registrato dal
    Oct 2004
    Messaggi
    367
    in=fopen("argv[1]","r+");

    Qui è l'errore! devi scrivere:
    codice:
    in=fopen(argv[1],"r+");
    altrimenti lui cerca il file "argv[1]", non quello nel primo argomento! LOL

    E poi metti il #DEFINE all'inizio, fuori da tutto.
    I've got a bike. You can ride it if you like.

  3. #3
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Nelle Pillole si è molto parlato della gestione di I/O da file in C.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  4. #4
    il problema è ke nn ho capito bene la funzione fread e fwrite anke in php esistono queste 2 funzioni però sono diverse.
    esempio fread in php;

    $fp=fopen("miofile.txt","r");
    $lettura=fread($fp,1024);

    in questo modo mette il contenuto del file nella variabile $lettura.
    1024 è la lungezza del file.

    per favore mi spiegate in dettaglio la funzione fread e fwrite???
    ho letto le guide e la pillola ma nn ho capito molto.

  5. #5
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Allora, firma stilizzata:

    fread (dove_metto_i_bytes, da_dove_parto, dove_arrivo, che_FILE_usare)


    quel dove metto i bytes è un void*, ovvero un puntatore a qualsiasi tipo di dato(credo, puntarore a niente... non saprei definirlo ), visto che è richiesto un puntatore(e che verrà modificato quindi è necessario passarlo per riferimento e non per valore come è di default) devi passare non una variabile, ma l'indirizzo della variabile usando &(operatore riferimento).
    Da dove parto indica da che byte patire, e dove_arrivo l'ultimo byte da leggere sarà dove_arrivo-1, che_FILE_usare mi sembra semplice, l'handle FILE che rappresenta appunto il file da leggere.

    Stesso discorso per fwrite, ma in buffer ci saranno i byte da scrivere nel file, basterà passare il buffer per valore(& non necessario), e da_dove_parto e dove_arrivo saranno riferiti all'array in questione.



    Esempio:

    codice:
    #include <stdio.h>
    
    int main ()
    {
    FILE *file; 
    char buffer[30];
    
     file = fopen ("Esempio.txt", "r"); 
     fread (&buffer, 1, 30, file);
     buffer[30] = '\0';//1 byte in + per il carattere di fine stringa
    printf("%s", buffer);
    
    return 0;
    }
    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  6. #6
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    comunque dopo 1 ora che studi il C già devi vedertela con i file VVoVe: ?

    TI conviene trovarti un bel tutorial che parte da 0 o meglio ancora un libro completo e approfondito(se ne trovano di free da scaricare in pdf).

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  7. #7
    siccome programmo olto bene con il php la maggior parte delle cose le so già es:
    tipo di dati,cicli,condizioni,array

    mi deco abituare solo ad una cosa: La dikiarazione delle variabili

  8. #8
    grazie di tutto ora funziona perfettamente
    voglio kiedere un'ultima cosa:
    Posso fare un fopen utilizzando un url oppure devo affrontare i socket???

  9. #9
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    si puoi farlo, attento che in linux o mac il carattere separatore è /, in windows è \ che corrisponde al carattere per fare le combinazioni escape come \n ecc... quindi dovrai usare \\ e fare path simili a questo:

    C:\\windows\\Desktop\\Miofile.txt

    Inoltre, fai attezione che tra C e php le differenza non sono solo le variabili, non biosogna dimenticare che php è un linguaggio di scripting server-side, il C è primo linguaggio "all-purpose" di un certo successo, quindi ci sono moltissimi aspetti che php esclude.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  10. #10
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    a scusa, ho capito male il post, se devi connetterti ad un url devi usre le socket si, ma si implementano in modo diverso su ogni OS, anche se dovrebbero esistere delle librerie di terze parti che aggiungono un livello in più di astrazione e permettono di compilare il programma sia su linux sia su windows o altri OS.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.