RISOLTO Errore segmentation fault in un programma in C

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

dalca

Nuovo Utente
Messaggi
20
Reazioni
7
Punteggio
22
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:
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.
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top