[C] Programma con file

di il
10 risposte

[C] Programma con file

Salve, ho questo programma che mi deve contare da un testo contenuto in un file

• il numero di righe di cui è composto il testo
• il numero totale di caratteri (esclusi quelli di spaziatura) presenti nel testo
• il numero massimo e medio di caratteri di una riga
• la riga più lunga incontrata nel file.

il mio problema riesco a contare i caratteri, riesco a fare la media, riesco a contare le righe ma NON riesco a capire qual'è la riga più lunga e quanto è lunga. Mi sapete aiutare? allego il codice sviluppato con il file
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#include<stdbool.h>
#define N 200

int main(int argc,char *argv[])
{
FILE *inptr;
char ch;

if(argc>2)
{
fprintf(stderr,"uso: termostato <nomefile> giorno hh:mm temperatura\n");
exit(EXIT_FAILURE);
}

if((inptr=fopen(argv[1],"r"))==NULL)
{
fprintf(stderr,"Impossibile aprire %s in lettura!\n",argv[1]);
exit(EXIT_FAILURE);
}

int count=0,rig=0;
char a[100],x;
while((ch=getc(inptr))!=EOF)
{
if(ch=='\n')
rig++;

if(ch!='\n' && ch!=' ')
count++;
}

printf("count=%d righe=%d\n",count,rig);

fclose(inptr);
return(0);
}
il file:
text.txt

La Vispa Teresa
tra l’erbetta
rincorrea
la farfalletta.

10 Risposte

  • Re: [C] Programma con file

    Se c'è qualche cosa strana tipo variabili dichiarate e non utilizzate, è solo una prova che ho fatto e che non ho eliminato
  • Re: [C] Programma con file

    Trovata la cosa strana!
    fprintf(stderr,"uso: termostato <nomefile> giorno hh:mm temperatura\n");
    Comunque... non sai come fare o non sai scrivere il codice che lo fa?
    hai pensato a qualcosa?
  • Re: [C] Programma con file

    Quello è un inutile controllo copiato da un altro codice di programma. comunque vedi questo codice che ho modificato:
    sembra che si trovi, ma i problemi sono 2:

    1) mi conta 50 caratteri e in realtà sono 48,il problema e che conta anche il carattere di terminazione credo;

    2) mi dice che la riga più lunga è "tra l'erbetta" ma non è così perchè la riga più lunga è "La Vispa Teresa"

    Che devo modificare?
    
    #include<stdio.h>
    #include<stdlib.h>
    #include<ctype.h>
    #include<string.h>
    #include<stdbool.h>
    #define N 200
    
    int main(int argc,char *argv[])
    {
    FILE *inptr;
    char ch;
    
    if(argc>2)
    	{
    	 fprintf(stderr,"uso: <nome_programma> <nomefile.txt>\n");
    	 exit(EXIT_FAILURE);
    	}
    
    if((inptr=fopen(argv[1],"r"))==NULL)
    	{
    	 fprintf(stderr,"Impossibile aprire %s in lettura!\n",argv[1]);
    	 exit(EXIT_FAILURE);
    	}
    
    int count=0,rig=0,carriga,carmax=-1,i;
    char a[200],lunga[200];
    float med;
    
    while(fgets(a,200,inptr)!=NULL)
    {
    carriga=0;		
     for(i=0;a[i]!='\n';i++)
     {
      if(a[i]!=' ')
    	carriga++;
     }
     rig++;
     count+=carriga;
     
     if(carriga>carmax)
     {
    	carmax=carriga;
    	strcpy(lunga,a);
     }		
    }
    med=count/rig;
    
    printf("Caratteri riga più lunga: %d\n\n",carmax) ;
    printf("Riga più lunga:\n") ;
    printf("\t%s\n", lunga );
    printf("Caratteri totali=%d\n\nNumero righe=%d\n\n",count,rig);
    printf("Media di caratteti per riga: %.1f\n\n",med);
    
    fclose(inptr);
    return(0);
    }
    
  • Re: [C] Programma con file

    1)A me conta i caratteri giusti(48). Occhio che dopo l'ultima lettera ci deve essere un 'a capo'
    2)La frase piu' lunga e' l'ultima(occhio che c'e' anche il punto)

    Se hai errori, sono nel file


    Prova con un altro file, e fai attenzione a formattarlo bene
  • Re: [C] Programma con file

    med=(float)count/(float)rig;
    altrimenti ti fa la divisione intera
  • Re: [C] Programma con file

    Boh non mi trovo un a capo :\
    cmq il problema della riga più lunga persiste e non riesco a risolverlo
  • Re: [C] Programma con file

    Hai provato con un altro file?

    Intendo che devi premere invio mentre scrivi il file anche sull'ultima riga in modo da terminarla come le altre
  • Re: [C] Programma con file

    Quando è così, si posta il file dati per farlo scaricare e provare.
  • Re: [C] Programma con file

    Oregon ho postato il contenuto del file! cmq non ho provato con un altro ora provo
  • Re: [C] Programma con file

    Lo so che l'avevi postato e apposta ti ho precisato "scaricare" ... mi sembrava chiaro ... per provare con il tuo file!
Devi accedere o registrarti per scrivere nel forum
10 risposte