Programmation batch

Résolu
Benq360 Messages postés 103 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
je fais quelques petits programmes, et je voudrais savoir comment faut il faire pour enregistrer la première ligne d'un fichier texte dans une variable
merci d'avance
Configuration: Windows Vista Internet Explorer 7.0

5 réponses

  1. jojo67150 Messages postés 118 Statut Membre 11
     
    En batch je ne vois pas par contre en C c'est plus simple: tu ouvre le fichier, tu revien au début, et tu fait une boucle qui enregistre les characteres 1par1 dans une chaine jusqu'a ce qu'il tombe sur /n (dans l'autre sens le / mais sous mac sa existe pas ...)

    Si sa peut t'aider et si sa t'interesse je peut te coder sa ...
    0
  2. Benq360 Messages postés 103 Statut Membre 3
     
    oui ca peut mettre utile stp
    0
  3. jojo67150 Messages postés 118 Statut Membre 11
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(int argc, char *argv[])
    {
        FILE* fichier = NULL;
        char nomdefichier [] = "test.txt"; // tape ton nom de fichier a la place de test.txt
        char ligne [100000];// la chaine qui contiendras la 1ere ligne
        long boucle = 0; // booleen qui definit quand on entre et sort de la boucle
        long i=0; // compteur pour savoir on l'on en est dans la chaine
        int caractereActuel = 0; // variable contenat le caracteres en cours
    
        fichier=fopen(nomdefichier, "r+"); // Ouverture du fichier en mode lecture
            if (fichier != NULL) // si l'ouverture a reussi
        {
           rewind(fichier); // Je reviens au début du fichier
    
            do // cf while ligne 38
            {
            caractereActuel = fgetc(fichier); // On lit le caractère
            // On l'enregistre dans la chain
            if (caractereActuel =='\n')// si le caractere est = au saut de ligne
            {
                printf("%s", ligne); // on affiche la ligne
                boucle=1;// et on sort de la boucle
            }
            else if (caractereActuel==EOF) // si il est impossible de lire le caractere en cours
            {
                boucle=1; // on sort de la boucle
                printf("Erreur : Impossible de lire le caractere"); // et on l'affiche
            }
            else // sinon
            {
                ligne [i]=caractereActuel; // On ajoute le caractere en cours a la chaine
                i++;// et on avnce dans la position
            }
        } while (boucle !=1); // On continue tant qu'il n'y pas d'erreur ou tant que l'on rencontre le signe de retour a la ligne
        }
        else // si l'ouverture du fichier a echouée
        {
    
            printf("Impossible d'ouvrir le fichier %s", nomdefichier); // On affiche le message d'erreur
        }
    
        fclose(fichier); // a la fin on n'oubli pas de fermer le fichier
    
        return 0;
    }
    
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Bonjour,
      Bien compliqué le code pour n'afficher que la première ligne ^^.
      fichier=fopen(nomdefichier, "r+")
      Ca n'ouvre pas en lecture seule mais en lecture écriture. Il vaut utiliser le mode "r" pour la lecture seule.
      De plus, le rewind est inutile puisque le flux sera automatiquement au début du fichier.

      Tout simplement, ça se résume à :
      #include <stdio.h>
      #include <stdlib.h>
      
      int main(void) {
          FILE *fp=fopen("hihi.txt","r");
          if (fp==NULL) {
              fputs("erreur à l'ouverture du fichier\n",stderr);
              return EXIT_FAILURE;
          }
          else {
              int c;
              while ((c=fgetc(fp))!='\n' && c!=EOF)
                  putchar(c);
      
              fflush(stdout);
              fclose(fp),fp=NULL;
          }
          return 0;
      }
      

      Cdlt,
      0
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    C:> type f2.txt
    aaa
    bbb
    ccc
    ddd
    
    C:> aa
    aaa
    
    C:> type aa.bat
    @echo off
    set x=
    for /f "delims=" %%a in ('type f2.txt') do (
    if not defined x set x=%%a )
    echo %x%
    
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Benq360 Messages postés 103 Statut Membre 3
     
    merci ca marche !!!!!!!!!!!!!!!!
    0