Problema con vettore di stringhe

di il
1 risposte

Problema con vettore di stringhe

Ciao,
ho un problema con questo codice:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define W 99
#define WL 20

int main()
{
    FILE *f1, *f2;
    int i;
    char c;
    char regola[WL];
    char *regole[W][WL];
    if(((f1=fopen("regole.txt", "r")) && (f2=fopen("compresso.txt", "r")))==0) {
        printf("Errore apertura file");
        exit(EXIT_FAILURE);
    }
    while(fscanf(f1, "%d %s", &i, regola)==2) strcpy(regole[i-1], regola);
    fclose(f1);
    if((f1=fopen("decompresso.txt", "a"))==NULL) {
        printf("Errore creazione file");
        exit(EXIT_FAILURE);
    }
    while((c=fgetc(f2))!=EOF) {
        if(c=='$') {
            if(fscanf(f2, "%d", &i)==1 && i>0 && i<=W) fprintf(f1, "%s", regole[i-1]);
            else fputc(c, f1);
        } else putc(c, f1);
    }
    fclose(f1);
    fclose(f2);
    return 0;
}
Così com'è funziona, ma se provo a sostituire la matrice regole[W][WL] con il vettore di stringhe *regole[W] il programma si blocca.

Perché?

Grazie anticipatamente.

1 Risposte

  • Re: Problema con vettore di stringhe

    Perché i due elementi non sono la stessa cosa.

    regole[W][WL]

    è un insieme di W array di caratteri di lunghezza WL allocato già in memoria

    *regole[W]

    è un vettore di W puntatori non inizializzati e che non puntano a nulla
Devi accedere o registrarti per scrivere nel forum
1 risposte