Comment afficher 2 paragraphes ensemble ?

Fermé
geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017 - Modifié par geekat le 5/06/2016 à 15:39
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 5 juin 2016 à 18:47
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
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
5 juin 2016 à 16:40
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.
0
geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
5 juin 2016 à 16:55
Merci.
En effet, grosse erreur :P. Je l'ai remplacé par :
char *tmp = strchr(chaine ,'\n');
if (tmp)
  • tmp = '\0';

Ce qui ne change rien aussi.
Je souhaite qu'à l'affichage j'ai :
***Texte : Premier paragraphe balblablabla................
Deuxieme paragraphe blablbelbsb .................

Au lieu de ça j'ai :
***Texte : Premier paragraphe balblablabla................


***Texte :  Deuxieme paragraphe blablbelbsb .................
0
geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017 > geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
Modifié par geekat le 5/06/2016 à 17:02
Sachant aussi que j'ai d'autres affichages plus loin dans le code, sur l'affichage du pluriel et du lexique du texte.
Ils s'affichent 2 fois chacun pour un paragraphe. Je veux les afficher ensemble pour un seul texte.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844 > geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
5 juin 2016 à 17:06
Autre chose :
if (fichier_cree != NULL)
fichier_cree n'est pas initialisé. J'imagine que tu nous as montré qu'une partie de ton code, mais vérifie ce point.

C'est normal que tu obtiennes ça, puisque comme je t'ai dit fgets() s'arrête au '\n'.

Que veux-tu ? Qu'il s'arrête au deuxième paragraphe ou qu'il lise tout jusqu'au 4609 caractères ('\n' compris) ?
0
geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
5 juin 2016 à 17:15
Oui, je ne l'avais pas écrit :
fichier_cree = fopen("fichier-créé.txt", "a");	         // Texte après analyse

Je veux qu'il lise tout le texte qu'il s'arrête à la fin.
En fait j'utilise plus loin la fonction
strtok 
qui va éclater la chaîne en mots, mais le retour à la ligne pose problème.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
5 juin 2016 à 17:28
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().
0