la_decheance | ola
J'ai un probleme avec mon code qui m'emepeche de continuer
Code :
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include <string.h>
- #define jeux_max 500
- #define noeud_l sizeof(abr_index)
- typedef enum {PC,PS3,XBOX360,WII}SUPPORTS;
- typedef enum {FPS,RPG,COURSE,SPORT,STR,ACTION,COMBAT}TYPES;
- typedef struct JEUX{
-
- char titre[40], nom_editeur[40];
- TYPES type;
- SUPPORTS support;
- int annee;
- int mode;// si 0, jeux solo, sinon, jeux multijoueur.
- int online;//si 0, jouable seulement offline, sinon, online disponible.
- int note;
- }JEUX;
- typedef struct abr{
- char cle_nom[40];
- int index_b;
- struct abr *fg, *fd;
- }abr_index;
- abr_index *ajoutabr(abr_index *it, char name[40]){
- abr_index *new;
- new->index_b = 0;
- if (it == NULL){
- new = (abr_index*)malloc (sizeof(noeud_l));
- strcpy(new->cle_nom,name);
- new->index_b++;
- new->fg = NULL;
- new->fd = NULL;
- }
- if (strcmp(new->cle_nom,name)<0){
- it->fd = ajoutabr(it->fd, name);
- }
- else if (strcmp(new->cle_nom,name)>0){
- it->fg = ajoutabr(it->fg, name);
- }
- return(it);
- }
- int creation_index (abr_index *ind){
- int reg;
- JEUX j;
- FILE * f_jeux;
- abr_index *idxx;
- f_jeux = fopen ("jeux.txt","r" );
- if (f_jeux == NULL ){
- printf("erreur dans l'ouverture du fichier.\n" );
- exit(-1);
- }
- while (!feof(f_jeux)){
- ind = (abr_index*)malloc (sizeof(noeud_l));
- fscanf(f_jeux,"%s,%s,%s,%d,%d,%d,%d,%s\n",j.titre,j.nom_editeur,j.type,&j.annee,&j.note,&j.mode,&j.online,j.support);
- ajoutabr(idxx, j.titre);
- }
- fclose (f_jeux);
- }
- int sauv_index (){
- FILE *f_index;
- abr_index *temp2;
- int longueur,i;
- f_index = fopen("index_nom.txt", "w" );
- if (!f_index){
- printf("erreur de creation du fichier.\n" );
- exit (-1);
- }
- temp2 = (abr_index*)malloc (sizeof(noeud_l));
- parcour_abr(temp2);
- fclose(f_index);
- }
- int affiche_abr (abr_index *ind){
- abr_index *temp;
- temp = (abr_index*)malloc (sizeof(noeud_l));
- if (temp != NULL){
- printf ("\n%s,%d\n\n", temp->cle_nom,temp->index_b);
- }
- while (temp->fg != NULL){
- temp = temp->fg ;
- printf ("\n%s,%d\n\n", temp->cle_nom,temp->index_b);
- if (temp->fg == NULL && temp->fd != NULL){
- temp = temp->fd ;
- printf ("\n%s,%d\n\n", temp->cle_nom,temp->index_b);
- }
- }
- if (temp->fd != NULL){
- temp = temp->fd;
- printf ("\n%s,%d\n\n", temp->cle_nom,temp->index_b);
- }
- parcour_abr(temp);
- }
- int parcour_abr(abr_index *ind) {
-
- if (ind != NULL){
- printf ("%s,%d\n\n", ind->cle_nom,ind->index_b);
- parcour_abr(ind->fg);
- parcour_abr(ind->fd);
- }
- }
- int main(){
- abr_index *lol;
- creation_index(lol);
- affiche_abr(lol);
- }
|
En faite pour l'instant je voudrais juste que en executant ca, le programme m'affiche les infos stocker dans l'arbre prise a partir du fichier jeux.txt J'ai plusieur probleme en faite deja par raport au mode d'ouverture : que je mette R, r+ ou autre chose, j'ai Bus error. si je met a+ sa m'affiche ,0
,0
,0
mais bon c'est pas ce que je veux je veux que le fichier soit parcouru et que les info soit stocké dans mon arbre ( qui servira d'index ).
Mes infos sont stocké comme ca dans mon fichier .txt : nom,genre,note ....
J'ai aussi testé une methode que j'ai trouver sur le net avec gcc pour debugger ( gdb ) et sa m'affiche sa :
Code :
- (gdb) run
- Starting program: /Users/Documents/projet
- Reading symbols for shared libraries ++. done
- Program received signal EXC_BAD_ACCESS, Could not access memory.
- Reason: KERN_INVALID_ADDRESS at address: 0x89068bcf
- 0x96df7f00 in strcmp ()
|
Je comprend pas trop si jamais vous savez d'ou proviendrai l'erreur sa serait fort aimable...
EDIT : J'ai testé toutes les focntions une par une et aparament c'est bien sur la fonction ajoutabr que sa bloque Message édité par la_decheance le 17-05-2009 à 15:29:47
|