Segmentation faul

di il
2 risposte

Segmentation faul

Salve a tutti,
in questo programmino che crea un vettore dinamico di stringhe e poi lo stampa mi si solleva un segmentation faul quando si invoca il metodo stampa e non riesco a capire perche

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

typedef char string[20];

void stampa(string *a,int n){
	int i;
	for(i=0;i < n;i++)
		printf("%s   ",a[i]);
	printf("\n");
	}

void creaArray(string *a, int n){
	int i;
	a = malloc(n*sizeof(string));
	for(i=0;i < n;i++){
		printf("inserire il nome numero %d.\n",i+1);
		scanf("%s",a[i]);
		}
	}

int main(void){
	string *a=NULL;
	int n;
	printf("inserire n.\n");
	scanf("%d",&n);
	creaArray(a,n);
	stampa(a,n);
	free(a);
	return 0;
	}


2 Risposte

  • Re: Segmentation faul

    Ciao,
    ecco il codice funzionante. Il problema era il seguente: nella funzione creaArray tu vai a modificare il puntatore a string, quindi devi passare un puntatore a puntatore a string. Le altre modifiche vengono di conseguenza.
    
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    typedef char string[20];
    
    void stampa(string *a, int n){
    	int i;
    	
    	for(i=0; i < n; i++)
    		printf("%s\n", a[i]);
    		
    	printf("\n");
    }
    
    
    void creaArray(string **a, int n){
    	int i;
    	*a = malloc(n * sizeof(string));
    	
    	for(i=0; i < n; i++){
    		printf("inserire il nome numero %d.\n",i+1);
    		scanf("%s",(*a)[i]);
    	}
    }
    
    
    int main(void){
    	string *a = NULL;
    	int n;
    	printf("inserire n.\n");
    	scanf("%d", &n);
    	creaArray(&a, n);
    	stampa(a, n);
    	free(a);
    	return 0;
    }
    
    
    Ciao.
  • Re: Segmentation faul

    Ah capito! grazie minomic!
Devi accedere o registrarti per scrivere nel forum
2 risposte