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 :

Récupérer une chaîne de caractère


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Par défaut Récupérer une chaîne de caractère
    Bonjour à toutes et à tous, le but de mon t.p est de comparer deux fichiers txt en tenant compte ou pas de la casse.
    La fonction strcmp() prenant en compte la casse, le premier cas est vite plié, mais concernant le second, je me heurte à un petit problème.

    Vu que strcmp() tient compte de la casse, j'ai décidé de mettre le contenu des deux fichiers en majuscules. Pour cela j'ai la fonction toupper() qui est fonctionnelle, et j'ai donc effectué une boucle pour pouvoir mettre chaque caractère en majuscule tour à tour. Cependant comment je peux récupérer la chaîne de caractère qui est constituée de tout ces caractères?

    Merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Cependant comment je peux récupérer la chaîne de caractère qui est constituée de tout ces caractères?
    Ben, tu modifies bien la même chaine ? Je ne comprends pas ta question.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Par défaut
    Oui mais je modifie caractère par caractère avec ma fonction toupper(). Ce qui fait que j'affiche avec un printf tous mes caractères en majuscule. Mais dans mon code, ce ne sont qu'une suite de caractères. et je voudrais en faire une chaîne en fait.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Le mieux, c'est que tu postes ton code car je n'ai pas tout saisi. On y verra plus clair.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Par défaut
    Désolé, je dois mal m'expliquer

    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
     
     
    int main(int argc, char *argv[])
    {
        FILE* fichier = NULL;
     
        int caractereActuel = 0, caractereMaj = 0;
     
     
        fichier = fopen("documents/test.odt", "r+");
     
    	if (fichier != NULL)
        {
    		caractereActuel = fgetc(fichier); // je récupère caractereActuel
     
     
    		// Boucle de lecture des caractères un à un
    		while (caractereActuel != EOF) 
    		{	
                            // Je le mets en majuscule
    			caractereMaj = toupper(caractereActuel); 
    			printf("%c", caractereMaj); // 
     
    			caractereActuel = fgetc(fichier); 
                            // je lis le caractere suivant
     
    		}
     
     
     
    		fclose(fichier);
     
        }
     
        return 0;
    }

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Par défaut
    Pardon pour la balise mais il faut la mettre en début de code, c'est tout? j'arrive pas à la mettre.

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Il faut mettre le code entre les balises [ code ] et [ /code ] (sans les espaces). Le mieux, c'est d'appuyer sur le bouton "Prévisualisation du message" avant d'envoyer le message, ça permet d'avoir un aperçu et de corriger si besoin.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Par défaut
    OKOK merci. Comme je disais tout à l'heure, j'aimerais récupérer la chaîne de caractères constituée de tout ces "%c" mais je ne vois pas du tout comment faire.



    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
     
     
    int main(int argc, char *argv[])
    {
    FILE* fichier = NULL;
     
    int caractereActuel = 0, caractereMaj = 0;
     
     
    fichier = fopen("documents/test.odt", "r+");
     
    if (fichier != NULL)
    {
    caractereActuel = fgetc(fichier); // je récupère caractereActuel
     
     
    // Boucle de lecture des caractères un à un
    while (caractereActuel != EOF) 
    {	
    // Je le mets en majuscule
    caractereMaj = toupper(caractereActuel); 
    printf("%c", caractereMaj); // 
     
    caractereActuel = fgetc(fichier); 
    // je lis le caractere suivant
     
    }
     
     
     
    fclose(fichier);
     
    }
     
    return 0;
    }

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Mais là y a un soucis. Tu ne manipules pas un fichier texte. Un fichier odt est un fichier binaire (le format fichier de OpenOffice), en fait une archive ZIP contenant de nombreux fichiers formatés (XML en particulier). Quelques explications ici : http://fr.wikipedia.org/wiki/OpenDocument

    Toutefois, si ton fichier est vraiment un fichier texte (i.e. qui contient des caractères imprimables, des espaces et des caractères de retour à la ligne), il est préférable d'utiliser l'extension txt et non odt, car là c'est ambigu.
    Une fois ceci effectué, le mieux est de lire ligne par ligne en utilisant la fonction "fgets", la ligne étant écrite dans un tableau. Une fois la ligne obtenue, tu peux donc en faire ce que tu veux : convertir chaque caractère en majuscule, etc.

    Par contre, si ton fichier est un vrai fichier odt, il faut convertir ton document en format texte (et l'enregistrer dans un fichier txt) car sinon tu ne pourras pas traiter le fichier comme tu le souhaites.

    Après, plus généralement, si tu veux comparer deux fichiers (i.e. vérifier que le contenu est pile poil identique, à l'octet près), la question avait déjà été posée il y a quelques jours sur ce forum. Mais tout dépend ce que tu appelles "comparer", lorsque tu dis vouloir comparer deux fichiers texte.

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/11/2009, 08h19
  2. sql récupérer une chaîne de caractères dans un champ
    Par ritchie23 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/05/2009, 13h12
  3. comment récupérer une chaîne de caractères
    Par the_crow_man dans le forum C
    Réponses: 8
    Dernier message: 04/07/2008, 16h39
  4. Réponses: 3
    Dernier message: 27/05/2008, 21h05
  5. [OS Perso] Récupérer une chaîne de caractères
    Par log2n dans le forum Programmation d'OS
    Réponses: 31
    Dernier message: 14/02/2006, 14h56

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