begin process at 2012 05 29 05:55:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Fatal signal: Segmentation Fault (SDL Parachute Deployed)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fatal signal: Segmentation Fault (SDL Parachute Deployed)

jeudi 29 avril 2004 à 17:21:28 | Fatal signal: Segmentation Fault (SDL Parachute Deployed)

broks


Je ne comprends vraiment pas pourkoa ca ne marche pas...
C'est surement un probleme au niveau de la fonction saisi puisque je plante lorsque je dois saisir une touche.
Mais la fonction toute seul marche bien.
Pour information c un jeu du type motus (la source est dispo sur mon compte)
Merci aux personnes qui iront jusqu'au bout de la page

Voila le code qui plante a l exec



#include <sdl\sdl.h>
#include <stdio.h>


SDL_Surface *bleu;
SDL_Surface *rouge;
SDL_Surface *bleu_jaune;
SDL_Surface *screen;


void InitIMG()
{
bleu = SDL_LoadBMP("bleu.bmp");
rouge = SDL_LoadBMP("rouge.bmp");
bleu_jaune = SDL_LoadBMP("bleu_jaune.bmp");
}


void Slock(SDL_Surface *screen)
{
if ( SDL_MUSTLOCK(screen) )
{
if ( SDL_LockSurface(screen) < 0 )
{
return;
}
}
}

void Sulock(SDL_Surface *screen)
{
if ( SDL_MUSTLOCK(screen) )
{
SDL_UnlockSurface(screen);
}
}


void DrawIMG(SDL_Surface *img, int x, int y, int w, int h, int x2, int y2)
{
SDL_Rect dest;
dest.x = x;
dest.y = y;
SDL_Rect dest2;
dest2.x = x2;
dest2.y = y2;
dest2.w = w;
dest2.h = h;
SDL_BlitSurface(img, &dest2, screen, &dest);
}


char affiche_caract (char caract,int ligne,int colonne,SDL_Surface *couleur)
{
int i=0,test=0;
while ( test==0 )
{
if ( caract == ('a'+i) )
{
if (i<16)
{
Slock(screen);
DrawIMG(couleur,ligne*32,colonne*32,32,32,32+i*32,128);
SDL_Flip(screen);
Sulock(screen);
test=1;
return ('a'+i);
}
else
{
Slock(screen);
DrawIMG(couleur,ligne*32,colonne*32,32,32,(i-15)*32,160);
SDL_Flip(screen);
Sulock(screen);
test=1;
return ('a'+i);
}
}
i++;
}
}

void DessIMG(SDL_Surface *img, int x, int y)
{
SDL_Rect dest;
dest.x = x;
dest.y = y;
SDL_BlitSurface(img, NULL, screen, &dest);
}










////////////////////////////////////////
////ouverture du fichier////////////////
////////////////////////////////////////
char* ouverture()
{
FILE *in;
int nb_caract;
char *fichier;
fichier=(char*)malloc(30*sizeof(char));

do
{
//printf("entrer le nombre de caractere du mot\n");
//printf("entre 5 et 10\n");
//fflush(stdin);
//scanf("%d",&nb_caract);
nb_caract=5;
switch(nb_caract)
{
case 5 :{strcpy(fichier,"c:\\dico\\5.txt");break;}
case 6 :{strcpy(fichier,"c:\\dico\\6.txt");break;}
case 7 :{strcpy(fichier,"c:\\dico\\7.txt");break;}
case 8 :{strcpy(fichier,"c:\\dico\\8.txt");break;}
case 9 :{strcpy(fichier,"c:\\dico\\9.txt");break;}
case 10 :{strcpy(fichier,"c:\\dico\\10.txt");break;}
default :break;
}
if((in = fopen (fichier,"rt"))==NULL) ;
//printf("****\t fichier non trouve \t****\n\n\a");
}while (in==NULL);
fclose(in);
return(fichier);
}





////////////////////////////////////////
////donne le mot a trouver//////////////
////////////////////////////////////////
char* choix_mot(char *fichier)
{FILE *in;
int nb_lignes=0,i,j;
char c,*mot;
int nb_caract;
//printf("%s\n",fichier);
srand(time(NULL));
in = fopen (fichier,"rt");
///on compte le nombre de lignes
while ( c = fgetc(in),! feof (in) )
{
if(c == '\n')
{ nb_lignes++;
}
}
fclose(in);
mot=(char*)malloc(9*sizeof(char));
//choix du mot dans le fichier choisit
in = fopen(fichier, "rt");//pour revenir au debut
srand(time(NULL));
j=rand()%nb_lignes;
j++;
i=0;
do{
fscanf(in,"%s",mot);
i++;
}while(i!=j);
fclose(in);

return(mot);
}






////////////////////////////////////////
//////////saisi du mot//////////////////
////////////////////////////////////////

char * saisi ( int nb_essai )
{
char * mot_saisi,caract;

int quit=0,i;
SDL_Event event;
// SDL_KeyboardEvent *key;
//Uint8 *keys;

mot_saisi=(char*)malloc(10*sizeof(char));

/* Loop until an SDL_QUIT event is found */
while( i!=5 )
{

/* Poll for events */
while( SDL_PollEvent( &event ) )
{
if ( event.type == SDL_KEYDOWN )
{
*(mot_saisi+i)=event.key.keysym.unicode;
//printf("lettre : %c\n",*(mot_saisi+i));
affiche_caract(*(mot_saisi+i),i,nb_essai,bleu);
i++;
}
}
}


//printf("entrer mot\n");
//scanf("%s",mot_saisi);
//printf("mot_saisi\n");
return (mot_saisi);
}





////////////////////////////////////////
//////////comparaison///////////////////
////////////////////////////////////////
char* comparaison(char* un_mot,char* le_mot,char* result,int nb_essai)
{ int i,j;
int flag[strlen(le_mot)],flag2[strlen(le_mot)];
int place[strlen(le_mot)];

for(i=0;i<strlen(le_mot);i++)
{flag[i]=0;flag2[i]=0;place[i]=0;}

for(i=0;i<strlen(le_mot);i++)
{
if( un_mot[i]==le_mot[i]) //si un caractere est bien place
{
result[i]=le_mot[i];
flag[i]=1;flag2[i]=1;
place[i]=2;

}
}
for(i=0;i<strlen(le_mot);i++) //si un caractere est mal place
{ for(j=0;j<strlen(le_mot);j++)
if(un_mot[i]==le_mot[j])
if (flag[j]==0)
if(flag2[i]==0)
{
flag[j]=1;flag2[i]=1;
place[i]=1;
}
}
for(i=0;i<strlen(le_mot);i++)
{if(place[i]==0){affiche_caract(*(un_mot+i),i,nb_essai,bleu);}
if(place[i]==1){affiche_caract(*(un_mot+i),i,nb_essai,bleu_jaune);}
if(place[i]==2){affiche_caract(*(un_mot+i),i,nb_essai,rouge);}
}
return(result);
}











int main ( int argc, char *argv[] )

{
int nb_caract,i,nb_essai;
char *fichier,*le_mot,*un_mot,*result;
fichier=(char*)calloc(sizeof(char),30);
le_mot=(char*)calloc(sizeof(char),9);
un_mot=(char*)calloc(sizeof(char),9);
result=(char*)calloc(sizeof(char),9);
fichier=ouverture();
le_mot=choix_mot(fichier);

//char * mot ;
//int i = 0 ;

InitIMG();



//mot = (char*) malloc (10* sizeof(char));


if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 )
{
printf("Unable to init SDL: %s\n", SDL_GetError());
exit(1);
}
atexit(SDL_Quit);

screen=SDL_SetVideoMode(640,480,32,SDL_HWSURFACE|SDL_DOUBLEBUF);
if ( screen == NULL )
{
printf("Unable to set 640x480 video: %s\n", SDL_GetError());
exit(1);
}

/* Enable Unicode translation */
// SDL_EnableUNICODE( 1 );

SDL_EnableUNICODE( 1 );

*(result+0)=*(le_mot+0);
for(i=1;i<strlen(le_mot);i++)
*(result+i)='.';

affiche_caract(*le_mot ,0,0,bleu);

for(nb_essai=0;nb_essai<5;nb_essai++)
{
//printf("il reste %d chances\n",5-nb_essai);
un_mot=saisi(nb_essai);

if(strlen(le_mot)==strlen(un_mot))
comparaison(un_mot,le_mot,result,nb_essai);
//printf("le_mot: %s\n",le_mot);
//printf("un_mot: %s\n",un_mot);
//printf("resultat: %s\n\n",result);

if((strcmp( un_mot,le_mot)==0))
break;
}

return(0);
}
vendredi 30 avril 2004 à 09:46:03 | Re : Fatal signal: Segmentation Fault (SDL Parachute Deployed)

shion

bon c'est juste une segmentation fault toute conne.... dans ce cas la on s'amuse a mettre des print un peu partous pour voir ou ca plante .....

sinon on a juste remarker ke tu utilise un "i" non initialise :P
vendredi 30 avril 2004 à 10:27:49 | Re : Fatal signal: Segmentation Fault (SDL Parachute Deployed)

broks


Ah mais oui c ca j aurai du m en doute car un segmentation fault revient souvent à une erreur dans la manipulation des pointeurs.
La variable i est l'index du pointeur qui me sert a me ballader dans mes chaines de caracteres.
Voila maintenant ca marche (enfin pour cette erreur en tout cas)
Merci à shion (ton premier mess sur les forums aura été des plus utiles)
vendredi 30 avril 2004 à 18:07:24 | Re : Fatal signal: Segmentation Fault (SDL Parachute Deployed)

shion

en Fait je voulais te repondre plus tot mais je me rapelais de mon mot de pass (je m'etait inscrit mais jamais poster).

et pis le serveur a mit 9 heure a m'envoyer le mail .... voili voilou


Cette discussion est classée dans : int, mot, char, nb, sdl


Répondre à ce message

Sujets en rapport avec ce message

Problème d allocation dynamique [ par Beqtb0x ] /*Bonjour a tous, je viens d'arriver sur ce site, je suis étudiant en première année d'informatique et j'ai un problème a un tp que même la prof n'est problème avec une fonction mélanger mot [ par lewan ] bonjour, voilà j'ai écris une fonction me permettant de mélanger un mot!! Dans un premier temps je crée un dictionnaire de mot aléatoire et dans un s exercice d'algo [ par Mjblue ] int chainehsrd( int i; int N; char Mot=''; char Mot[255]; int E=97; char L=(char)E) { for (i=0; i< char Mot[255]-1; i++) problème avec tri de tableau de chaine - Aidez-moi svp [ par jaguar57 ] Bonjour,Je viens demander de l'aide car j'ai un problème de compréhension de la fonction qsort avec un tableau de chaine fourni par un fichier txt.Je AIDE [ par alex64100 ] BOJOUR je dois coder un correcteUr d'orthographe mon code est truffé d'erreurs, j'ai du mal à les corriger svp aidez-moi #include #include #inclu SDL et windows.h sous sygwin [ par agent933 ] salut je travaille en ce moment sur un programme en langage.grosso modo jutilise le port serie pour recevoir donnees et ensuite utilise une interface Concaténation int et Cstring [ par maghella ] Salut!Je voudrais concanténer un chiffre et une lettre.Ex: mot="A";Nb=1;mot est de type CString et nb de type int.Je voudrais ke ça donne dans mot: A1 Hachage fermé problème de lecture [ par mcflysupersonic ] Bonjour je suis nouveau sur le forum est ceci est ma première question donc j'espère que je ne me suis pas trompé d'endroit pour poster.Voilà j'ai un Probleme dans mon programme password [ par Jarod1980 ] Salut tout le monde,Voilà j'ai un problème dans mon programme de password. Je m'explique: J'ai développé en premier lieu un programme où l'utilisateur Probleme dans mon prog password dans la gestion ' * ' [ par Jarod1980 ] Salut,Voila j'ai développé un programme de password qui récupère le password crypté dans un fichier et le compare au password rentré par l'utilisateur


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales