Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    110

    [c] Errore di Segmentazione

    ciao a tutti

    è da un pò che non uso C ora sto ricominciando ad usarlo, facendo un piccolo programma per la simulazione di una sfida al tiro tra 2 giocatori

    ora prima di tutto non ho fatto niente volevo procedere a piccoli passi iniziando solo a far tirare i due e vedere chi segnava per primo il codice che ho scritto è questo


    #include <stdio.h>
    #include <stdlib.h>
    main()
    {

    int i,n,,c;
    float p1[n],p2[n];
    float T;

    do{
    c=0;
    T=rand()%100;

    if(T>70){
    printf("canestro palla a p1 /n");
    c=1;}
    else{
    printf("tiro sbagliato tira p2 /n");
    T=rand() %100;

    if(T>70){
    printf("canestro palla a p2 /n");
    c=2;}
    else
    printf("Tiro sbagliato tira p1 /n");

    }
    }
    while(c!=0);
    }

    quando lo vado a compilare non mi da errori, ma quando lancio il programma mi dice Errore di Segmentazione...ora non saprei veramente dove vado a violare la memoria secondo voi come posso risolvere questo problema??

  2. #2
    Qui:
    codice:
    int i,n,c;
    float p1[n],p2[n];
    stai dichiarando due array VLA di dimensioni n - ma n non è inizializzato per cui avrà un valore "casuale", probabilmente sufficientemente grande da causare un errore (probabilmente uno stack overflow).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Prima di tutto:

    codice:
    int i,n,,c;
    float p1[n],p2[n];
    n non è inizializzato, non si sa che dimensione hanno p1 e p2, potresti anche assegnargli una dimensione negativa, il che non ha senso per il compilatore.
    Dimmi se dopo aver inizializzato n ti da ancora qualche problema (sii specifico).

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    110
    grazie ad entrambi, in effetti era quello il problema...sono un bel pò arrugginito XD

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 © 2024 vBulletin Solutions, Inc. All rights reserved.