Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Ancora segmentation fault core dumped

    Ragazzi voi lo vedete? Io è piu di un ora che lo cerco uff
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Elem {
    	float			value;
    	struct Elem*	next;
    } Elem, *NList;
    
    NList crea_lista(void);
    void stampa_lista(NList L);
    
    int main(void) {
    
    	NList lista = crea_lista();
    	stampa_lista(lista);
    
    	return 0;
    }
    
    NList crea_lista(void) {
    	NList L;
    	int ctrl;
    	printf("1 - Inserire primo elemento\n0 - Laciare lista vuota\n? ");
    	scanf("%d", &ctrl);
    	if(ctrl == 0) {
    		L = NULL;
    		return L;
    	}
    
    	NList Lcpy = L;
    	printf("Immettere float: ");
    	scanf("%f", &L->value);
    	printf("\n1 - Inserire altro elemento\n0 - Interrompere inserimento\n? ");
    	scanf("%d", &ctrl);
    	if(ctrl) {
    		while(1) {
    			Lcpy->next = malloc(sizeof(Elem));
    			Lcpy = Lcpy->next;
    			printf("Immettere float: ");
    			scanf("%f", &Lcpy->value);
    			printf("\n1 - Inserire altro elemento\n0 - Interrompere inserimento\n? ");
    			scanf("%d", &ctrl);
    			if(!ctrl) break;
    		}
    	}
    	Lcpy->next = NULL;
    	return L;
    }
    
    void stampa_lista(NList L) {
    	printf("Lista -> ");
    	while(L != NULL) {
    		printf("%.2f -> ", L->value);
    		L = L->next;
    	}
    	printf("NULL\n");
    }

  2. #2
    Ok trovato! Non allocavo L proprio all'inizio della funzione crea_lista xD
    Ora ho un altro problema, questa funzione mi causa un altro segmentation fault
    Un aiutino?
    codice:
    NList delsup(NList L) {
    	NList Lcpy = L;
    	float sup = 999.999;
    	while(L != NULL) {
    		if(L->value > sup)
    			sup = L->value;
    		L = L->next;
    	}
    
    	L = Lcpy;
    	NList libera;
    	if(L->value == sup) {
    		L = L->next;
    		free(Lcpy);
    		return L;
    	}
    	while(1) {
    		if((L->next)->value == sup) {
    			libera = L->next;
    			L->next = libera->next;
    			free(libera);
    			return Lcpy;
    		}
    		L = L->next;
    	}
    }

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Prova a fare un po' di debugging, linea per linea, controllando sempre i valori dei puntatori per trovarne uno non valido o per trovare *esattamente* la linea che causa il fault.

    Che è quello che farebbe ognuno di noi ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Trovato xD
    nella variabile sup mi ero scordato il meno davanti... xD
    grazie del suggerimento, ancora non avevo pensato a procedere in quel modo nel debugging

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da VYCanisMajoris
    grazie del suggerimento, ancora non avevo pensato a procedere in quel modo nel debugging
    Prego ... anche se è il modo standard ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    Originariamente inviato da VYCanisMajoris
    Ragazzi voi lo vedete? Io è piu di un ora che lo cerco uff
    Come ti è stato suggerito, per questo genere di problemi fai il debug passo per passo e verifica qual è l'istruzione su cui si verifica l'errore, senza costringere gli utenti a prendere il codice e a compilarlo per fare lo stesso tipo di operazione.

    E non dimenticare il linguaggio nel titolo, come da Regolamento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.