Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [c] fine del file in c

  1. #1

    [c#] fine del file in c

    ciao raga
    avrei un problema

    dovrei leggere un testo finchè non finisce il file

    ho provato con questo comando while(!eof(fd))

    ma non funziona mi da il seguente errore di compliazione

    /tmp/ccId65WE.o: In function `main':
    ioex3.c.text+0xed): undefined reference to `eof'
    collect2: ld returned 1 exit status

    ecco la parte di codice

    int main(int argc ,char **argv)
    {
    fd =open(argv[1],O_RDONLY,0777);
    {
    while(!eof(fd))

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    1) Perche' indichi il linguaggio C# se il tuo problema e' per il C ?

    2) Non esiste la funzione eof (meglio, c'e' la macro EOF ...) ma devi usare la feof

    http://www.cplusplus.com/reference/c...tdio/feof.html
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    1) scusa errore di battitura

    2) no non va mi va in segmentation fault

    io devo leggere il file tutto e scrivere a video i primi 5 caratteri di ogni riga

    i problemi sono due
    1) leggere finchè il file non finisce
    2)una volta letti 5 caratteri deve andare al rigo successivo

    posto il codice
    codice:
    #include<string.h>
    #include<unistd.h>
    #include<fcntl.h>
    #include<sys/types.h>
    #include<sys/stat.h>
    
    int fd,i,c;
    int tot=0;
    int riga=0;
    char num[1];
    char stringa[50];
    
    int main(int argc ,char **argv)
    {
      fd =open(argv[1],O_RDONLY,0777);
        {
          while(!feof(fd))
           {
             read(fd,stringa,5);
             write(1,stringa,5);
           }
        }
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Originariamente inviato da ubuntuunixc
    i problemi sono due
    1) leggere finchè il file non finisce
    2)una volta letti 5 caratteri deve andare al rigo successivo
    Non lo avevi detto nel tuo primo post ... e' sempre bene dire tutto quello che si deve fare sin dall'inizio, altrimenti si rischia di perdere tempo ...

    Comunque, il tuo file e' di testo o binario?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    un file di testo normale
    tipo questo con su scritto

    ciaociao
    html.it
    ilforum
    firefox

    l'output a video deve essere

    ciaoc
    html.
    ilfor
    firef

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Allora

    codice:
    	char line[100];
    	FILE *fd;
    
    	fd = fopen(argv[1], "r");
    	
    	while(fgets(line, 100, fd))
    		printf("%.5s\n", line);
    
    	fclose(fd);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    grazie per la risposta

    però avrei bisogno di un aiutino in più

    non voglio usare fgets

    come potrei fare? diciamo utilizzando solo read e write?

    GRAZIE PER L'AIUTO :-)

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Sai quanto caratteri possano essere lunghe (al massimo) le singole righe?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Scusate, c'è qualcosa che non quadra; feof() non prende un file descriptor, ma un puntatore alla struttura FILE; percui, feof(fd) è sbagliato.


  10. #10
    Comunque, posto una mia versione:
    codice:
    FILE *stream = fopen("file.txt", "r");
    int count = 0;
    
    assert(stream != NULL);
    
    while(!feof(stream)){
    
       if(count++ < 5)
          putchar(fgetc(stream));
       else{
    
          count = 0;
          putchar('\n');
    
          while(fgetc(stream) != '\n')
             ;
    
       }
    
    }

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.