Comment afficher 2 paragraphes ensemble ?

Fermé
Signaler
Messages postés
228
Date d'inscription
vendredi 31 juillet 2015
Statut
Membre
Dernière intervention
24 février 2017
-
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
-
Bonjour,

Je souhaite afficher un texte qui contient des sauts de ligne (pour le moment, j'essaie avec un seul saut de ligne).
Mais voilà, à l'affichage j'ai 2 textes, et des traitements séparés pour les 2 textes.
Voici le bout de code :

#include <stdio.h>      
#include <string.h>    
#include <stdlib.h>  
#include "tri.h"      
#define TAILLE_MAX 4700      


int main(){
    FILE * fichier, * fichier_cree, * fichier_stopwords, * fichier_lexique;      
    char chaine[TAILLE_MAX];      

    char * words;

    // Ouverture des fichiers
    fichier = fopen("text-mining.txt","r");                  // Texte avant analyse
    

    /*---- parcourir le fichier text-mining */
    while (fgets(chaine, TAILLE_MAX, fichier)!=NULL ) {
        // Test ouverture
        if (fichier_cree != NULL) 
  {
            printf("Le fichier est ouvert!");
            // Ecriture dans le fichier
              
             /*-------------Ce code ne fait rien !! -----------------*/     
            char *tmp = strchr(chaine ,'\n');
            if (tmp) 
           tmp = '\n';
            printf("\n***Texte : %s", chaine);
}
}
  return 0;
}


Pourquoi j'ai 2 textes ? Comment faire pour les afficher en 1 seul ?

Merci

1 réponse

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 798
Bonjour,

Je ne suis pas sur d'avoir bien compris ton problème.
Mais, il faut savoir que fgets() s'arrête au '\n' (sauf si la ligne est trop longue bien évidemment).

char *tmp = strchr(chaine ,'\n');
if (tmp)
tmp = '\n';

Deux erreurs. Tu remplaces '\n' par '\n', donc aucun intérêt.
Ensuite, ce n'est pas tmp='\n' qu'il faut mettre, mais
*tmp=...
.

Que souhaites-tu faire exactement ? N'hésite pas à donner un exemple.
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 798
Dans ce cas, tu peux faire une première boucle de lecture du fichier.
À chaque itération, tu lis une ligne avec fgets().
Ensuite, tu enlèves le '\n' pour mettre un '\0'.
Et enfin, tu concatènes dans un buffer avec strcat().
Messages postés
228
Date d'inscription
vendredi 31 juillet 2015
Statut
Membre
Dernière intervention
24 février 2017

Je n'ai pas bien compris.
La première boucle de lecture ne se fera pas avec fgets, avec quoi ?
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 798
Cela devrait donner quelque chose du genre :
char buffer[TAILLE]="";
char chaine[TAILLE_MAX];
while (fgets(...) != NULL) {
     char *p=strchr(...);
     if (p)
          *p = '\0';
     strcat (buffer, ...);
}

Bien sûr, il faut faire attention avec les tailles de chaine et buffer. Ils doivent être suffisamment grands.
Messages postés
228
Date d'inscription
vendredi 31 juillet 2015
Statut
Membre
Dernière intervention
24 février 2017
>
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016

Merci.
J'obtiens le même résultat avec ça :
char buffer[9999]="";
char chaine[TAILLE_MAX]; 
    
    /*---- parcourir le fichier text-mining */
    while (fgets(chaine, TAILLE_MAX, fichier)!=NULL) {
        // Test ouverture
        if (fichier_cree != NULL) 
		{
            printf("Le fichier est ouvert!");
            
	    char *tmp = strchr(chaine ,'\n');
            if (tmp) 
	          *tmp = '\0';
	          
	    	char *text = strcat(buffer,chaine);
            printf("***Texte : %s", text);
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 798
char *text = strcat(buffer,chaine);
char *text est inutile dans ton exemple.

De plus, tu as mis printf() dans la boucle while(). Il faut le sortir de la boucle.
La boucle permet de concaténer toutes les lignes de ton fichier.
Note : si tu supprimes le '\n', il n'y aura qu'un seul paragraphe. À toi de voir si c'est bien ce que tu souhaites.

Et à la fin de la boucle while, tu auras la variable buffer, qui contient tout le contenu de ton fichier. Pense aussi à bien contrôler le retour de strcat().