begin process at 2012 05 28 07:53:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

char **


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

char **

samedi 17 novembre 2007 à 21:42:24 | char **

PADYVEN

Si quelqu'un peut jeter un oeil sur ce code et le critiquer merci
(constructive les critiques :-))

j'ai un probleme tout bete
ce programme lit un fichier texte le stocke dans un char *
puis on parcours le char etoile pour creer un tableau de pointeur
pour chaque debut de ligne

tout marche correctement sauf quand je veux afficher a la fin
car le printf %s attend un \0 pour terminer la chaine hors je n'en mais pas
et je ne veux pas reallouer mon char * 36000000 de fois

si quqlqun peut me dire comment corriger et ameliorer ca ce serait sympa

merci d'avance

//**********************************************
void LitFichier44()
{//ouvre un fichier le stocke dans un char*

    int longeur=0;
    FILE* fichier = NULL;
    char **tableauligne=NULL;
    char *letexte=NULL;
    long nbrlignes=0;
    long i=0,
    long j=0;

    fichier = fopen("test.txt", "r");  //ouvre le fichier en lecture
    if (fichier != NULL)
    {
        //nombre de char du fichier
        fseek(fichier, 0, SEEK_END);       //se positionne a la fin
        longeur=ftell(fichier);            //longeur=taille du fichier
        printf("longeur du fichier %ld\n",longeur);

        //fout le fichier dans un char *
        letexte=(char*)malloc(longeur*sizeof(char)); //alloue la memoire pour le fichier
        system("pause");
        rewind(fichier);       //se positionne au debut
        while(i<longeur)
        {
            letexte[i]=fgetc(fichier);
            //compte le nombre de ligne
            if (letexte[i]=='\n') nbrlignes++;
            i++;
        }
        fclose(fichier); //ferme le fichier

        //affiche le texte
        printf("%s\n",letexte);
        printf("Nombre de lignes %ld\n",nbrlignes);
        system("pause");

        //pour les lignes
        tableauligne=(char**)malloc(nbrlignes*sizeof(char*));
        tableauligne[0]=letexte;
        for (i=1;i<nbrlignes-1;i++)
        {
            while (letexte[j]!='\n')
            {j++;}
            tableauligne[i]=&letexte[j+1];
            j+=1;
        }

       /* le probleme est ici */
        //affiche ligne par ligne
        for (i=0;i<nbrlignes-1;i++)
        {
            //en toute bonne logique c ca m'affiche du pointeur juqu'a la fin du char 
            //comment corriger ca
           
printf("\tLigne: %ld ->%s",i,tableauligne[i]);
        }

        free(letexte);
        free(tableauligne);
    }
    printf("\n");
}

samedi 17 novembre 2007 à 21:58:05 | Re : char **

SAKingdom

Membre Club
1. Tu lis ton fichier octet par octet ce que je déconseille très fortement. Si ton fichier n'est pas volumineux, lis le tout d'un coup puis navigue dans le buffer avec un pointeur.

2. Il suffit d'ajouter toi même le 0 de fin de chaine. Alloue taille_du_fichier+1 octets de mémoire et après la lecture, tu ajoutes buffer[nombre_doctets_lu] = 0

C++ (@++)



Cette discussion est classée dans : fichier, printf, char, longeur, letexte


Répondre à ce message

Sujets en rapport avec ce message

Debutant : ecrire et lire un fichier txt [ par manu ] Bonjour a tous.Je debute, aussi desole.... :)Je cherche donc a ecrire dans un fichier txt, puis a lire ce fichier ligne a ligne, faire un split / expl [debutant]attribution dun mot a une char et comparaison ... [ par DarkEbola ] en fait, jaurais aimé attribuer du texte a une charkke chose comme 500 ou 600 caracteres maximais jarrive pas a lui attribuer plus de 1 Charsuis-je pl Je cherche l'erreur [ par ScorpionTiti ] J'ai effectué un programme qui me permette d'écrire dans un fichier et je l'ai compilé. En le lançant, il m'envoie un message d'erreur mais je ne sais CRYPTAGE !!! [ par megaman ] Voilà j'essai de faire un log de cryptage à l'aide de fonctions et procédure.Les fonctions et procédures :Une fonction qui retourne le nom de fichieru SOS manque d'inspiration [ par graall ] J'ai besoin de faire un petit programme (en mode console) qui demande à l'utilisateur de saisir le nom d'un fichier et ensuite, qui vérifie si ce fich Problème de lecture fichier [ par nach73 ] J'ai un enorme probleme je n'arrive pas a lire dans mon fichierVoila la partie de mon programme.Si quelqu'un peux m'aide.Merci.//ouverture du fichier Aide pour enregistrement fichier en C [ par petit_mateo ] Voici mon code :#include #include #include int x(){   char ANCIEN[] = "resta.txt";   char NOUVEAU[] = "restb.txt";   FILE *INFILE, *OUTFILE;< Copier/coller de données contenue dans un fichier en C [ par petit_mateo ] Voici mon code :#include #include #include int x(){   char ANCIEN[] = "resta.txt";   char NOUVEAU[] = "restb.txt";   FILE *INFILE, *OUTFILE;< Lecture et ecriture sur fichier [ par developvbdebut ] Bonjour tout le mondeJe travaille sur la gestion des fichier en c.Mon livre n'explique pas clairement l'ectriture et la lecture dans les fichiers.Voic demande d'aide (Gestion des fichiers et structures en C) [ par medsky ] Bonjour, Afin de manipuler les fichiers et les structures en C, On m'a demandé de réalisé une application qui cree un fichier pour saisir les inform


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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 : 1,482 sec (3)

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