problème insertion fichier .txt dans une allocation dynamique
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

problème insertion fichier .txt dans une allocation dynamique



  1. #1
    invitef838f58f

    problème insertion fichier .txt dans une allocation dynamique


    ------

    coucou,

    j'ai un petit problème
    j'ai un fichier .txt qui se présente sous cette forme tel quel exactement:
    111111111111
    101100011111
    100111000111
    100000000001
    110000111001
    111100000001
    111100000001
    100001111011
    110011111011
    111011000001
    111000000111
    111001111111
    111111111111

    avec 1 représentant des murs et 0 représentant le chemin libre

    mon programme possède une sous partie qui doit pouvoir mettre en mémoire ce labyrinthe
    donc j'ai fait du code mais pour le moment c'est l'utilisateur qui doit rentrer les 1 et 0, ce que je ne veux pas
    il faudrait qu'il le mette en mémoire directement après la lecture du fichier .txt

    et là je n'y arrive pas aidez moi svp

    voici le code avec le mélange de ce qu'il faut et ce que je dois retirer:
    Code:
    char **creat_lyb(char **lyb)
    {
      FILE *fichier_txt;
      int i=0;
    
    
           fichier_txt = fopen("laby.txt", "r"); // ouvrir en lecture le fichier txt, à laisser
    
    
    
        lyb = malloc(13 * sizeof(*lyb));  //allocation dynamique, à laisser, ce qu'il faut faire avec le laby qui a pour dimension 12*13
        for (i = 0; i < 13; i++)
         {
    		lyb[i] = malloc(sizeof(char) * 13); // Allocation de la deuxième dimension
    		
    		printf ("donner environnement de la %i ligne", i+1);  // ces deux ligne sont à retirer car là c'est l'utilisateur qui rentre le laby 
    		scanf("%s", lyb[i]);                                   // il faudrait que ce soit à partir de .txt et que ce soit toujours en 2 dimensions
         }
    
    
    
        // fermeture du fichier
        if(fclose(fichier_txt) == EOF)
        {
          printf("Probleme de fermeture du fichier");
          exit(1);
        }
        return (lyb);
    }
    merci d'avance

    -----

  2. #2
    Jackyzgood

    Re : problème insertion fichier .txt dans une allocation dynamique

    Bonjour

    J'ai un pti bout de code sous la main qui permet de lire un fichier texte et de le stocker dans un tableau 2D, contacte moi par MP pour me donner ton adresse mail pour te l'envoyer.
    si c'est idiot mais que ca marche, c'est que ce n'est pas idiot

  3. #3
    invitef838f58f

    Re : problème insertion fichier .txt dans une allocation dynamique

    ok je vais voir

    sinon si tout autre personne a une idée pour essayer que je garde la même forme de mon code et que ma fonction retourne le même type pour lyb
    je suis preneur parce que là je bloque

  4. #4
    doul11

    Re : problème insertion fichier .txt dans une allocation dynamique

    salut,

    si tu veut faire de l'allocation dynamique :

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    
    int main(int i_narg,char *pc_argv[])
    {
    int i,j;
    int i_nline=4, i_ncolumn=3;
    char **ppc_labyrinthe;
    
    
    ppc_labyrinthe=malloc(sizeof(*ppc_labyrinthe)* i_nline);
    
    for(i=0;i< i_nline;i++)
    	{
    	ppc_labyrinthe[i]=malloc(sizeof(ppc_labyrinthe)* i_ncolumn);
    	
    	for(j=0;j< i_ncolumn;j++)
    		{
    		ppc_labyrinthe[i][j]= 'd'; //a remplacer par la lecture dans le fichier 
    		}
    	}
    	
    	
    for(i=0;i< i_nline;i++)
    	{
    	for(j=0;j< i_ncolumn;j++)
    		{
    		printf("ppc_labyrinthe[%i][%i]=%c (adr=%p)\n",i,j,ppc_labyrinthe[i][j],&ppc_labyrinthe[i][j]); 
    		}
    	}
    
    	
    return(0);
    }
    La logique est une méthode systématique d’arriver en confiance à la mauvaise conclusion.

  5. A voir en vidéo sur Futura
  6. #5
    invitef838f58f

    Re : problème insertion fichier .txt dans une allocation dynamique

    merci doul11 pour l'alloc

    mais à aucun moment c'est le programme lui même qui cherche dans le fichier .txt et qui extrait les info tout seul pour les mettre dans la mémoire

    la ligne ou tu dis 'd' // a remplacer par lecture
    -> c'est justement ce que je cherche à faire, enfin que le programme fasse tout seul pour mémoriser ensuite sous la même forme le .txt que j'ai écrit dans le premier message en 2d mais ça ... aïe

  7. #6
    bzh_nicolas

    Re : problème insertion fichier .txt dans une allocation dynamique

    Tu peux tous simplement allouer ton tableau comme tu le fais déjà (sans la demande à l'utilisateur) puis ensuite tu refais 2 boucles for imbriquée qui parcours ton tableau. A l'intérieur de la deuxième, tu lis un caractère dans ton fichier texte et tu le places dans ton tableau (en n'oubliant pas de tenir compte du caractère saut de ligne)..

  8. #7
    doul11

    Re : problème insertion fichier .txt dans une allocation dynamique

    Citation Envoyé par Ptitsuisse91 Voir le message
    la ligne ou tu dis 'd' // a remplacer par lecture
    -> c'est justement ce que je cherche à faire, enfin que le programme fasse tout seul pour mémoriser ensuite sous la même forme le .txt que j'ai écrit dans le premier message en 2d mais ça ... aïe
    c'est assez rudimentaire, il faudrais améliorer un peut, voila avec la lecture dans un fichier :

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    
    
    int main(int i_narg,char *pc_argv[])
    {
    int i,j;
    int i_nline=13, i_ncolumn=12;
    char c,**ppc_labyrinthe;
    FILE *pF;
    
    
    ppc_labyrinthe=malloc(sizeof(*ppc_labyrinthe)* i_nline);
    
    if ( (pF=fopen("./test.data","r"))==NULL){perror("test.data");exit(0);}
    
    
    for(i=0;i< i_nline;i++)
    	{
    	ppc_labyrinthe[i]=malloc(sizeof(ppc_labyrinthe)* i_ncolumn);
    	
    	for(j=0;j< i_ncolumn;j++)
    		{
    		c=fgetc(pF);
    		if( (c=='\n') || (feof(pF)!=0 ) ){printf("error in data file !\n");exit(0);}
    		ppc_labyrinthe[i][j]= c; 
    		}
    	c=fgetc(pF); //élimine la fin de ligne
    	}
    	
    	
    for(i=0;i< i_nline;i++)
    	{
    	for(j=0;j< i_ncolumn;j++)
    		{
    		printf("%c",ppc_labyrinthe[i][j]); 
    		}
    	printf("\n");
    	}
    	
    return(0);
    }
    en sortie du programme j'ai :
    Code:
    [doul@compaq c]$ ./test
    111111111111
    101100011111
    100111000111
    100000000001
    110000111001
    111100000001
    111100000001
    100001111011
    110011111011
    111011000001
    111000000111
    111001111111
    Dernière modification par doul11 ; 09/01/2011 à 18h03.
    La logique est une méthode systématique d’arriver en confiance à la mauvaise conclusion.

  9. #8
    invitef838f58f

    Re : problème insertion fichier .txt dans une allocation dynamique

    merci doul11 c'est ce qu'il me fallait pour la lecture
    ;)

  10. #9
    doul11

    Re : problème insertion fichier .txt dans une allocation dynamique

    de rien

    mais fait attention car je travaille sur linux, si tu utilise un autre système les fin de lignes ne seront peut être pas les même !
    La logique est une méthode systématique d’arriver en confiance à la mauvaise conclusion.

  11. #10
    invitef838f58f

    Re : problème insertion fichier .txt dans une allocation dynamique

    ok je vais voir ça

Discussions similaires

  1. Ecrire des donnees dans un fichier .txt avec MATLAB
    Par invitecd42c963 dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 24/10/2011, 16h03
  2. Matlab Lecture de n fichier .txt et ecriture dans un fichier .xls
    Par invite24513ab6 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 26/07/2010, 09h12
  3. Supprimer espaces dans un fichier txt avec un batch
    Par inviteccee45bb dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 24/07/2010, 10h26
  4. Matlab boucle pour modifier le nom de plusieur fichier data1.txt data2.txt et test1 test2
    Par invite51a13d50 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 20/04/2009, 17h58
  5. adresse ip dans un fichier txt
    Par alainav1 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 5
    Dernier message: 25/11/2006, 12h06