Buonasera a tutti,
sto scrivendo un programma in C in cui inserisco delle righe di testo e poi devo contare le righe, i caratteri totali, quelli alfanumerici e le parole.
Per ora sono bloccato al conteggio delle righe in quanto quando inserisco anche una sola parola al momento dell'invio mi va in errore di segmentation fault.
Ho cercato sul web e ho trovato che l'errore è dovuto all'accesso in una parte di memoria di cui non si ha diritto...purtroppo però non riesco a trovare nel programma l'istruzione che mi fa andare in errore.
Il listato è il seguente:
Qualcuno mi sa dire dove è l'errore?
Una volta individuato l'errore provo a completare il programma.
Nel programma ci sono variabili che utilizzerò nel proseguo della stesura del programma.
Grazie a tutti.
sto scrivendo un programma in C in cui inserisco delle righe di testo e poi devo contare le righe, i caratteri totali, quelli alfanumerici e le parole.
Per ora sono bloccato al conteggio delle righe in quanto quando inserisco anche una sola parola al momento dell'invio mi va in errore di segmentation fault.
Ho cercato sul web e ho trovato che l'errore è dovuto all'accesso in una parte di memoria di cui non si ha diritto...purtroppo però non riesco a trovare nel programma l'istruzione che mi fa andare in errore.
Il listato è il seguente:
C:
/*
Si scriva un programma in C che acquisisca da tastiera un testo libero, composto da più
righe (max 1000) di un numero di caratteri non superiore a 100 ciascuna. L’inserimento
termina quando l’utente inserirà una riga uguale a FINE.
Al termine dell’acquisizione del testo, il programma dovrà stampare le seguenti stati-
stiche:
1 - Il numero totale delle righe
2_- Il numero totale dei caratteri inseriti
3 - Il numero totale dei caratteri alfanumerici inseriti
4 - Il numero totale delle parole inserite
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX 1000
#define LUN 100
int main(void) {
char testo[MAX][LUN + 1];
int N;
int ncar, nalfa, npar;
int end;
char riga[300];Al momento
int i, j;
//INSERISCO LE RIGHE FINO A CHE NON DIGITO LA RIGA "FINE"
N = 0;
end = 0;
do {
printf("\ntesto: ");
gets(riga);
if(strlen(riga > LUN)) {Al momento
printf("\nErrore: riga troppo lunga (max %d caratteri)\n", LUN);
}
else if(strcmp(riga, "FINE") == 0) {
end = 1;
}
else {
strcpy(testo[N], riga);
N++;
}
}
while(end == 0 && N < MAX);
printf("\nL'utente ha inserito %d righe.\n", N);
}
Qualcuno mi sa dire dove è l'errore?
Una volta individuato l'errore provo a completare il programma.
Nel programma ci sono variabili che utilizzerò nel proseguo della stesura del programma.
Grazie a tutti.