Erreur de segmentation

SPC Messages postés 4 Statut Membre -  
 kokher -
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

satanas101
 
// 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 909 Statut Membre 507
 
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 Statut Membre
 
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
marruecco
 
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 4260 Statut Contributeur 857
 
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
kokher
 
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