Caratteri in una riga C

di il
11 risposte

Caratteri in una riga C

Salve,
devo contare i caratteri di ogni riga presente in un file, ma non so come fare. Ho fatto questo programmino che finora mi conta i caratteri totali e il numero di righe. come posso fare?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 5
#define M 50

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

if(argc!=2)
	{
	 printf("Uso: <%s> <nomefile>",argv[0]);
	 exit(EXIT_FAILURE);
	}

inptr=fopen(argv[1],"r");

if((inptr=fopen(argv[1],"r"))==NULL)
	{
	 printf("File non trovato\n");
	 exit(EXIT_FAILURE);
	}

char ch;
int count=0,righe=0,maxrighe=0,i;
while((ch=fgetc(inptr))!=EOF)
{
if(ch!=' ' && ch!= '\n')	/*Numero caratteri*/
	count++;
if(ch=='\n')	/*Numero righe*/
	righe++;
}

printf("Numero righe: %d\n",righe);
printf("Numero caratteri: %d\n",count);
printf("Maxriga: %d\n",maxrighe);



close(inptr);
return(0);
}
il file che prendo in considerazione contiene questo breve testo:
La Vispa Teresa
tra l'erbetta
rincorrea
la farfalletta.

11 Risposte

  • Re: Caratteri in una riga C

    Concentrati sulla parte del codice che "trova" il "\n" (ovvero l'indicatore della fine linea).
    Appena trovi quel carattere, visualizzi il valore attuale del numero di caratteri e rimetti a zero il contatore ...

    Prova a modificare *da solo* il codice, così almeno qualcosa impari ...
  • Re: Caratteri in una riga C

    ultrasound91 ha scritto:


    una logica adatta a questo scopo sarebbe quella di contare i caratteri della riga che si analizzando tramite una variabile temporanea e ogni volta che la riga termina, se il numero è maggiore allora lo sovrascrivi in maxrighe
    E perché deve trovare il massimo ? Lui ha scritto "contare i caratteri di ogni riga " ...
  • Re: Caratteri in una riga C

    Quella variabile non viene mai usata, chissà cosa voleva farci.
  • Re: Caratteri in una riga C

    Sto sbattendo la testa su una cosa che è così banale
    praticamente io avevo inizialmente pensato di fare:
    do{ maxrighe++;}while(ch!='\n')
    ma non vabbene.
    mi sto scemunendo.

    praticamente potrei risolvere il mio problema salvando il testo del file in un unica stringa e crearmi un
    
    char riga[200];
    
    while ( fgets(riga, 200, f) != NULL )
    {
    for(i=0; riga[i]!='\n'; i++ )
    {
    if (riga[i] != ' ' )
     maxrighe++ ;
    }
    }
    
    ma volevo evitare di fare una cosa del genere e trovare un metodo più semplice simile a quelli fatti..
  • Re: Caratteri in una riga C

    Ma hai letto il mio suggerimento ??
  • Re: Caratteri in una riga C

    Desidero contare in numero di carattere per ogni riga per individuare la più lunga, e la media caratteri(la media caratteri già l ho fatta non è un problema). Oregon ho letto il tuo suggerimento ma non capisco come tradurlo
  • Re: Caratteri in una riga C

    stefanaimon ha scritto:


    Desidero contare in numero di carattere per ogni riga per individuare la più lunga, e la media caratteri(la media caratteri già l ho fatta non è un problema).
    E dove l'avevi scritto che volevi il massimo e la media? Perché non si è chiari quando si fanno le domande?
    Oregon ho letto il tuo suggerimento ma non capisco come tradurlo
    Beh, potevi comunque provarci o dire qualcosa invece di ignorarlo ...
  • Re: Caratteri in una riga C

    Non l'ho scritto perche una volta che mi avreste aiutato a contare i caratteri dele righe, il resto ero in grado di farlo (la media basta considerare tutti i caratteri tranne '_' e '\n' e fare diviso il numero di righe).
  • Re: Caratteri in una riga C

    Beh, allora prova a seguire il mio suggerimento, passo passo ...
  • Re: Caratteri in una riga C

    Grazie per l aiuto.....
  • Re: Caratteri in una riga C

    Ma non ci hai nemmeno provato ...
Devi accedere o registrarti per scrivere nel forum
11 risposte