Tom's Guide > Forum > Programmation > lecture fichier en c
Mot :    Pseudo :           
 

Voila j'ai une erreur de segmentation a l'execution avec ce code :

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

int taillematrice;
int** mat;

void lecture_fichier(char* nom_fichier){

FILE* f=fopen(nom_fichier,"r" );
if (f != NULL){
fscanf(f,"%d",&taillematrice);
printf("La matrice est de taille %d\n",taillematrice);
int i,j;
mat=(int **)malloc(sizeof(int*)*taillematrice);
printf("" );
for (i=0;i<taillematrice;i++){
mat[i]=malloc(sizeof(int)*taillematrice);
//printf("sommet %d",i);
}
printf("\n" );
//Recuperation par ligne
for(j=0;j<taillematrice;j++){
for (i=0;i<taillematrice;i++){
fscanf(f,"%d",&mat[j][i]);
printf("%d\t",mat[j][i]);
}
printf("\n" );
}//////////////////////////////////////////////printf("fonction lecture finie" );
int n=fclose(f);
if (n!=0){printf("le fichier n'est pas fermer" );}
}
else{
printf("Impossible d'ouvrir le fichier" );
}
}

avec en param de cette fonction le fichier avec ceci a l'interieur

10
0 0 0 0 0 0 0 0 0 0
0 0 0 4 4 4 0 0 0 0
0 0 0 0 0 0 0 0 10 0
0 0 0 0 0 0 6 0 0 0
0 0 0 0 0 0 2 2 0 0
0 0 0 0 0 0 0 0 11 0
0 0 0 0 0 0 0 0 0 22
0 0 0 0 0 0 0 0 3 0
0 0 0 0 0 0 0 0 0 17
0 0 0 0 0 0 0 0 0 0

Merci

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

BOUHHHHH les variables globales !!!! :)

résultats:

Code :
  1. int lecture_fichier(char* nom_fichier)
  2. {
  3. FILE* f=fopen(nom_fichier,"r" );
  4. if (f != NULL)
  5. {
  6.   fscanf(f,"%d",&taillematrice);
  7.   printf("La matrice est de taille %d\n",taillematrice);
  8. }
  9. else
  10.       return 0;
  11. int i,j;
  12. mat=(int **)malloc(sizeof(int*)*taillematrice);
  13. printf("" );
  14. for (i=0;i<taillematrice;i++)
  15.   mat[i]=(int *)malloc(sizeof(int)*taillematrice);
  16. for(j=0;j<taillematrice;j++)
  17. {
  18.       for (i=0;i<taillematrice;i++)
  19.       {
  20.             fscanf(f,"%d",&mat[j][i]);
  21.             printf("%d\t",mat[j][i]);
  22.       }
  23. }
  24. return 1;
  25. }


j'ai juste changé la ligne suivante..
mat[i]=malloc(sizeof(int)*taillematrice);
EN:
mat[i]=(int *)malloc(sizeof(int)*taillematrice);

pour bien initialiser en tableau de int.
apres, ton fscanf avec un %d sur un tableau (initialisé en void*) par le malloc (d'ailleurs refusé par mon compilateur sans le cast!) aura posé problème.

Résultat de l'éxecution:


[manuel@manulinux src]$ g++ fich.cpp -o fich
[manuel@manulinux src]$ ./fich
La matrice est de taille 10
0 0 0 0 0 0 0 0 0 0 00 0 4 4 4 0 0 0 0 0 00 0 0 0 0 0 10 0 0 0 00 0 0 6 0 0 0 0 0 0 00 0 2 2 0 0 0 0 0 0 00 0 0 11 0 0 0 0 0 0 00 0 0 22 0 0 0 0 0 0 00 3 0 0 0 0 0 0 0 0 00 17 0 0 0 0 0 0 0 0 00
[manuel@manulinux src]$ vi toto.txt

Ps: ne tiens pas compte de la mise en page du résultat, c'est ce foutu système qui la détraque, le resultat est conforme au programme!


Message édité par elendilm le 10-05-2007 à 18:33:15
Répondre à elendilm

mici mici jmen va verifier ca

Répondre à totof59

ben ca marche pas toujours une erreur de segmentation
Et je viens de voir que tu compiler en c++

C'est un projet de C !!!!!!!

T'aurais pas une autre idée????

Répondre à totof59

je fais manger mon fils et le couche, puis je regarde.. :)

c'est drole quand meme, ca le fait marrer (il a 7 mois) de me voir taper au clavier ... :)

vu qu'il est court comme programme, t'a essayé de le faire fonctionner en pas à pas , pour voir où il plante ?

montre moi aussi ton main.

si tu veux/peux pas, MP le moi


Message édité par elendilm le 11-05-2007 à 18:07:17
Répondre à elendilm

j'ai fais 1 copié collé de ton source dans un fic.c,
j'ai rajouté un

int main()
{
lecture_fichier("toto.txt" );
return 1;
}

puis:

[manuel@manulinux src]$ cc fic.c -o fic
[manuel@manulinux src]$ ./fic
La matrice est de taille 10

0 0 0 0 0 0 0 0 0 0
0 0 0 4 4 4 0 0 0 0
0 0 0 0 0 0 0 0 10 0
0 0 0 0 0 0 6 0 0 0
0 0 0 0 0 0 2 2 0 0
0 0 0 0 0 0 0 0 11 0
0 0 0 0 0 0 0 0 0 22
0 0 0 0 0 0 0 0 3 0
0 0 0 0 0 0 0 0 0 17
0 0 0 0 0 0 0 0 0 0
[manuel@manulinux src]$

comme tu vois, pas de problème:
1: montre moi ton main
2: montre moi tes options de configuration, voire ton makefile.


Répondre à elendilm

ok c'est bon ca tourne maintenant merci beaucoup

Répondre à totof59
Tom's Guide > Forum > Programmation > lecture fichier en c
Aller à :

Il y a 999 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens