IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

le saut de ligne


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 102
    Par défaut le saut de ligne
    bonjours a tous

    alors j'ai fichier que j'ouvre et dont j'associe le contenu a un pointeur

    mon probleme est qu'il y a des passages de lignes que je voudrais enlever

    voila comment se presente le contenu de ma variable pointeur

    p1
    p2
    p3
    g1

    g2

    g3
    r1
    r2
    r3

    ce que j'aimerais est ceci

    p1
    p2
    p3
    g1
    g2
    g3
    r1
    r2
    r3


    merci pour vos reponses

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    J'ai justement une fonction sous la main qui fait ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void suppr_saut_ligne (char * s)
    {
       char * p = s;
     
       while ((p = strchr (p, '\n')) != NULL)
       {
          p++;
     
          if (*p == '\n')
          {
             char * ps1 = p;
             char * ps2 = ps1 + 1;
     
             do
             {
                *ps1++ = *ps2++;
             }
             while (*ps1 != '\0');
          }
       }
    }
    Voilà, si tu veux savoir quelque chose là dessus n'hésite pas
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    salut, avec fgets tu lis ton fichier et avec la fonction isspace tu regarde si ta ligne est un saut de ligne

    man fgets
    man isspace (avec #include<ctype.h>)

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Ah, Franck.H a été plus rapide

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par salseropom
    Ah, Franck.H a été plus rapide
    Pour une fois
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 102
    Par défaut
    merci pour l'aide ca ma beaucoup aider!!

  7. #7
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Moi j'aurais plutôt utilisé la solution proposé par salseropom qui a l'avantage de traiter tous les cas concernant une ligne vide.
    Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #include <stdlib.h>
    #include <stdio.h>
    #include <ctype.h>
     
    #define MAX_SIZE 256
     
    int isBlankLine (const char *s)
    {
        int ret = 1;
        while (*s != '\0')
        {
            if ( !isspace(*s))
            {
                ret = 0;
                break;
            }
            s++;
        }
        return ret;
    }
     
    int main (void)
    {
        FILE *src, *dest;
        char chaine[MAX_SIZE];
     
        if ((src = fopen("source.txt","r")) == NULL)
        {
            fprintf(stderr,"Impossible d'ouvrir le fichier en lecture\n");
            exit(EXIT_FAILURE);
        }
     
        if ((dest = fopen("destination.txt","w")) == NULL)
        {
            fprintf(stderr,"Impossible d'ouvrir le fichier en ecriture\n");
            fclose(src);
            exit(EXIT_FAILURE);
        }
     
        while ((fgets (chaine, MAX_SIZE, src)) != NULL)
        {
            if (!isBlankLine(chaine))
            {
                fprintf(dest, "%s", chaine);
            }
        }
     
        fclose(src);
        fclose(dest);
     
        return EXIT_SUCCESS;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Saut de ligne sans <br/>
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 21/06/2007, 11h21
  2. [Saut de ligne] Problèmes bizarre
    Par gandalf_le_blanc dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 06/04/2004, 14h06
  3. Nombre de sauts de ligne dans un String
    Par Johnbob dans le forum ASP
    Réponses: 7
    Dernier message: 03/03/2004, 15h33
  4. Lecture de saut de ligne...
    Par Garion dans le forum C
    Réponses: 5
    Dernier message: 13/02/2004, 11h42
  5. [JTextPane] saut de ligne...
    Par neric dans le forum Composants
    Réponses: 2
    Dernier message: 21/01/2004, 15h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo