Erreur de segmentation

Fermé
SPC Messages postés 4 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 21 octobre 2005 - 21 oct. 2005 à 15:06
 kokher - 24 oct. 2007 à 20:49
Bonjour à tous !!
Déjà , dieu benisse les forum d'aide à la programation !!
Je suis sous FC4 , j'ai besoin pour ma licence d'ecrire un petit programme qui necessite des listes de chiffres aléatoire.J'ai ecris ce petit programme de test joint (veux faire un tableau d'aléatoire et l'afficher), j'ai déjà reglé grace à CCM un probléme sur mon random mais maintenant c'est une "erreur de segmentation" qui me bloque!!
Je ne sais pas vraiment comment faire pour le regler !
Une âme charitable serais elle en mesure de m'aider?

#include<stdio.h>
#include<stdlib.h>
main()
{
int i;
int T[i];
srand((int)time(NULL));
for(i=0;i<2000;i++)
{
T[i]=rand()%100;
printf("%d \n",T[i]);
}
}

6 réponses

// reseau de canalisation

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


struct troncon
{int origine; int extremite; int cout;};

void saisie (int np,int nt, struct troncon classement[])
{struct troncon x;
printf("Rentrer le nombre de points");
scanf("%d",&np);
printf("Rentrer le nombre de troncon");
scanf("%d",&nt);
for(int i=0;i<nt;i++)
{printf("donner l'origine du troncon de rang %d \n");
scanf("%d",&x.origine);
printf("donner l'extremite du troncon de rang %d\n");
scanf("%d",&x.extremite);
printf("donner le cout du troncon de rang %d\n",i);
scanf("%d",&x.cout);
classement[i]=x;}
}



struct troncon calcul (int nombreretenu, int np,struct troncon classement[])
{
int groupe[np];int rang=0;
for(int i=0;i<np;i++)
groupe[i]=i+1;
struct troncon canol;
struct troncon retenu[np-1];
int i=0;
while (nombreretenu < np)
{canol=classement[rang];
if (groupe[canol.origine] != groupe[canol.extremite])
{nombreretenu++;
for(int sommet=0;i<np;i++)
{if (groupe[sommet]==groupe[canol.extremite])
groupe[sommet]=groupe[canol.extremite];
}
retenu[i]=canol;
i++;
}
rang++;
}
return retenu[np-1];
}


int main()
{int np ;int nt;struct troncon x;

struct troncon classement[nt];

saisie(np,nt,classement);

int nombreretenu=0;
struct troncon retenu[np-1];
calcul(nombreretenu,np,classement);

printf("les troncons retenus sont");
for(int i=0;i<np-1;i++)
{printf("%d %d %d \n",retenu[i].origine,retenu[i].extremite,retenu[i].cout);}
}
2
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 506
21 oct. 2005 à 15:51
Salut,
donnes une taille explicite au tableau T
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 2000
int main( int argc, char** argv) 
   {                                                                           
    int i;
    int T[N];
    srand((int)time(NULL));
    for(i=0;i<N;i++)
        {
        T[i]=rand()%100;
        printf("%d \n",T[i]);
        }
    return 0 ;
    }                

A+, crabs
0
SPC Messages postés 4 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 21 octobre 2005
21 oct. 2005 à 19:36
Ca marche !!!!!
Oh , joie !!! Merci crabs,c'est gentil d'avoir répondu, je n'osais esperer une solution si rapide !
Un petit #define et la vie est plus belle !
0
salut tout le monde!
j'ai souvent ce genre de problemes des qu'il s'agit de manipuler des buffers.
j'ai meme essayé un petit programme volontairement simple :

main(int argc, char *argv[]) {
char buffer[32];
strcpy(buffer, argv[1]);
}

j'ai une erreur de segmentation à la compilation!!!!

pourtant j'ai defini une taille explicite à mon tableau!

quelqu'un peut m'aider?
merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
23 janv. 2007 à 15:55
Certainement parce que tu dépasse le taille de ton tableau non ?

Tu met quoi en argument à ton programme ?

Attention à ce que ta chaine en paramètre à ton programme ne dépasse pas une longueur de 31 sinon segment fault.
0
Bonjour,
Voici un programme que je développe depuis pas longtemps et j'aimerais avoir votre aide dessus. Il est à noter que j'ai une erreur de segmentation à l'exécution.

#include <stdio.h>
#include "structure.h"
#include "fonction.h"
#define NMAX 22

int main(void){

int nb;
int i;
int *plat;
joueur tab[NMAX]; // joueur est une structure que j'ai défini dans le fichier structure .h

printf("Bienvenue sur la plate forme de notre jeu de role\n");
printf("Veuillez entrez le nombre de joueurs souhaites\n");
scanf("%d",&nb);

for(i=0;i<nb;i++){
tab[i]=creerPerso();
}

printf("%d \n",tab[0].troll.xp);
/* Le programme s'exécute jusque là et ensuite me marque une erreur de segmentation */

plateau(plat);
afficherPlateau(plat);
printf("de(10)=%d - de(6)=%d - de(20)=%d\n", de(10),de(6),de(20));

return 0;
}

Je serais très ravi d'avoir quelqu'un capable de résoudre mon problème. Merci d'avance !!
0