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 :

Recherche de chaines de caracteres dans un fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 83
    Par défaut Recherche de chaines de caracteres dans un fichier
    Bonjour,

    Pour m'entrainer à la gestion de fichier en C j'ai décidé de concevoir une application me permettant de chercher une chaine de caractère défini dans l'ensemble des fichiers contenu dans un répertoire

    Mon programme fonctionne bien quand il parcourt des fichiers tels que des .c, .html, .txt

    Cependant quand il recherche dans un .doc / docx il ne trouve jamais la chaine de caractère prédéfini.
    J'ai alors décidé d'ouvrir un .doc avec un bloc note. J'ai alors découvert ce qu'on pourrait qualifier d'abomination.
    Voici un exemple :

    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
    ¬’ÍjÃ0„ï…¾ƒØ{-;ý¡„ȹ”@®*û нþ¡²$´›¶~û
    CR‡÷â‹`Fhæ“´›íwoÄ'êœU%)´¥«:Û(x/vwÏ ˆµ*´qH°Íoo6¯h4ÇCÔvžDL±¤*eök)©l±×”86îÔ.ôš£ôºüÐ
    ÊUš>É0Í€ü"Sì+a_݃(›ÿÏvuÝ•øâÊc–¯TÈ/<¼!s¼ÅXd3‰´ ¯ƒ¬–¡?'g![?óü4ê¹úÇ%ë9Žþ¶RŽk6Çð°$Cí,ú`&gë!/=ÿ  ÿÿ PK     ! 6.PmÕ       word/document.xmlœSM›0½Wê@¾'@³M(
    ì!i{ªu·?À1¼±=ÈvBÓ_ß1`šm¥UÔfü<ïÍçöñ§’Ñ…+@$]&$âšA%tSÏ_‰¬£º¢4/È•[òX¾·íó
    ØYqí"¤Ð6¿ Ú:×åqlY˵Kè¸F°£¨CÓ4±¢ætîTG8
    )Ü5þ$k2Ñ@AÎFçÅB	fÀBí¼Ku-ŸŽàaîÑ=÷Sȃbl¸Ä@ÛVt6°©ÿeÃÛ@ry+‰‹’á]ßÝ£VÚc?”ÃîÁTÆ*ÅÛýÎŒiò–öT@O1{ÜÂk͉¢BÏ4~:þêÿܼ%6/µcOõ'¬E‰³t„êêÏ.êsœÅê{A’d•%»=	W{^Ó³tù˜mvŸwƒ§	ðçàâJyzi›ºi_Nr÷¹+ý×ßΫYÎÜa&øWò	ñ›Û!Àæé*ö¸+é'}Þâÿ:[e$|£žÒö6}H7þ‰M‹LÁ<‚s€ƒlÉë´å´â˜Ì&ÁÝëóÀݘÍÙ
    f2Ê1ÙŽ2¬¿w¢ÀÝüjD…ˆš„cåj=8a
    ÆÄ‡BŒ•Ç»°Îåo   ÿÿ PK     ! ±‰Tó¬  ¥     word/theme/theme1.xmlìYOoE¿#ñF{oc'vGuªØ±hÓF±[Ôãxw¼;ÍìÎjfœÔ7Ô‘q*7P©•¸”%PEêWàÍÌîz'^“¤*‚æÐÚ³¿yÿßoÞ¬/_¹3t@„¤<i{õ‹5‘ÄçM¶wkØ¿°æ!©p`ÆÒö¦DzW6Þ}ç2^W‰	‚ý‰\Çm/R*]_Z’>,cy‘§$gc.b¬à«—AnÌ––kµÕ¥ÓÄC	ŽAì0úùvs<¦>ñ6ré=*%õ‚ÏÄ@Ë&Ù–6دk„œÊ.è ³¶Š~8$÷”‡–
    ´½šùó–6./áõlSö–öõÍ_¶/Ûì/"JëýFëÒV!ß ˜šÇõz½n¯^È3 ìûੵ¥,³Ñ_«wr™%ý8/»[kÖ.¾$eÎæV§Ói¶2[¬P²søµÚjcsÙÁÅ7çðÎf·»êà
    ÈâWçðýK*Õ†‹7*ˆÑd*ÚïgÒȘ³íJøÀ×j|†‚j(ªK«óD-ªµßå¢ 
    dXÑ©iJÆØ‡2îâx$(Ö
    ð:Á¥'vÉ—sKZ’¾*©j{ï§Zb&ïå³ï^>{‚Žî?=ºÿãуG÷°‚œ]Û8	Ë»^|ýÉŸ>D<ùêÅÃϪñ²Œÿõû~ùéÓj ´ÏÌœçŸ?þíéãç_|üû·+à›Êð!‰D7È!Úã18f¢âZNFâl;†¦å›I(q‚µ–
    ù=9èS̲ì8vtˆÁÛè£
    xur×1x‰‰¢š¯E±Üáœu¸¨ŒÂ5*«æá$	«•‹I·‡ñA•î.Nœüö&)ðf^–Žã݈8fî2œ(’„(¤Ÿñ}B*¼»C©×ê.ùX¡;u0*ÉŽœjšmÚ¦1äeZå3äÛ‰ÍÎmÔá¬Êë-rà"¡+0«0~H˜Æ«x¢p\%rˆcVøu¬¢*#Sá—q=© Ó!aõ"eÕž›ü-%ýƪLû›Æ.R(º_%ó:漌ÜâûÝÇiv@“¨Œ}OîC‰b´ËU|‡»¢¿Cp²0Ý·)qÒ}2Ü¢¡cÒ¬@ô“‰¨ÈåUúLÙC5@êWÇ4ù;âf˜Ûj8?âª|þå£
    »ßTÊÞ„Ó«ªg¶õ"ÜqzîrÐ7Ÿ·ð$Ù%ÐóGÔ[r~KÎÞžœõóùSòŒ…*õ,bm3vǧî1el*¦Œ\—fð–pö}XÔûÌ•“·°4‚º“Aƒ6{àꪢA„SÚëžÊLt(QÊ%\Ír¥l‡Á_Ù«fS_B,sH¬vx`—Wôr~×(Ä«Bs¡Í*h§U¶r)
    ¾½Š²º6êÔÚêÆ4CŠŽ¶Âebs)‡®ÁbMjŒBåU¸ôkÕpÙÁŒ:î6GyZLÎ3E2ÂÉr¤ýžÏQÝ$)¯•9G´¶ôÅñ„¨•´µ´Ø×Ðvš$•Õ5¨Ë³÷:YÊ+x–%v¼YRnN–*ö×j.7=äã´íážã².õ‰Yo›|%lÙŸØÌ¦ËgÙl厹MP‡W6îs;<
    ©¶°Œli˜GY	°Dk²ö/7!¬çå@ÎŠ•5(†Í
    ˆ£›Z2_•“]Zѱ³_3*åEÄ 
    шMĆôëR*áu‡aýÞÍéh›G.9gMW~#fpv³4ÂÝêÍ;ÙÂ
    !6˜o%óÀ·JۍsgwÅ´ü9¹R.ãÿ™+ú<·+Î€ï†FºSÚ*âÀBiDý¾€ÁÁpT¼ß…ÇPTð†Úü/ȁþßöœ•aÚ.‘j†HP8T$ÙZ2Õw‚°zvvY‘,d*ªd®L*Ù#r@ØPsàª>Û=A©6ÉhÀàŽ×Ÿû=ë*Q¨‡œr¿9LVœ½¶þéÉÇ638åò°hòø&ãÁìTµûÍöüì-;¢ÌƬFÞ*¬t´²¶EÎxÔZÆšóx¹™Yœ÷‹(…wHHÿç>³¿vèuÈ÷€[üx¡…AÙ@U_°ƒÒiG08ÙE[LZ”
    m6:é¨å‡õ9Oº…ÞcÁÖ–&ßgv1œ¹êœ^<Ï`gvbm׆2{¼Eaiœ_dLbÌïdå_²øè.$z~3˜0%M1ÁïTÃ=0} Ío5š*  ÿÿ PK     ! ƒðã  j     word/settings.xmlœUÛnœ0}¯Ô@<w{KV4$R6Ý^”´UH_ú6€+¾É6K¶_ß1àU£(êÓÚç̜υ=¿|ä,Øm¨i8?‰Ã€ˆB–TÔiøë~7Û„± J`R4<^^¼wÞ%†X‹f&@	a™†*‰)ÂÁÌ8-´4²²³BòDV-ÈøŽ:
    kUE£Ó‰TD*Z%5kN¤®£ÁóZ-'ÂF‹8>4a`1aÓPe¼ÿ_5Õx‘ýkØsæíºyüšåøÜNêòÉã-é9¥eAŒÁÊr6<—^ư·èõ¼¡¹}x&rmû#%ºD]`A±çqFŽÀÀ²Ê,X‚´Q„±~
    F ÃwI*sÀ¦
    HïS’
    Zfï!ϬTh´Lð,Þ’ÍA5Dô½úããùÕb=ðE
    Kt¦*Àh[)¬–ÌÛ•ò»´[ɕƂŒxÛÇÆ™-KÜÞ-Ž7WËëínðpìÄ,7ñj{ý³Þœm?m_b&µh†QyâÆæ§ö§fðáù[๦ܺÁÂTy’ë‡+*<ŸpòœÉÚÜ“³Ù@Œí°:žÀ™˜’uMª^˜Ý‚®'従<Ñ/¢Ø«oOj®÷DÖ²Uƒj§A}%Â>à|µõ¨°7”{Ü´yæ½Î×3ª叽v
    je me dis alors que lorsque je fais un fgets pour obtenir une ligne à comparer mon programme reçoit le code ci-dessus.

    Est il alors possible d'après vos expériences de rechercher une chaine de caractère dans un tel fichier ?

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Ne serais-ce pas un problème d'encodage ?
    Je me rappelle plus comment il faut faire par contre, essaye de regarder s'il n'y a pas des articles pour lire des fichiers en utf-8.

    Je ne pense pas que ce soit du binaire (ouvrir le fichier avec l'option 'b' : 'wb' 'rb' ...)

  3. #3
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Bonjour,

    les fichiers à la word (doc et docx) ne sont pas des fichiers textes ils ont un format spécifique. Même si le document word contient la chaîne "le petit chat est mort", le fichier ne contiendra certainement pas la chaîne "le petit chat est mort" sous cette forme (les données sont compressées, décrivent aussi la police de caractères et plein d'autres choses). Le format docx est un fichier zip qui contient plusieurs autres fichiers au format xml mais aussi des images par exemple.
    L'important à retenir est qu'un programme prévu pour manipuler/trouver/modifier des chaînes au format ASCII (en gros le comportement par défaut de c) ne fonctionnera bien qu'avec des fichiers ASCII, plus ou moins bien lorsque l'encodage est utf8 ou iso8859-1 (comme le fait remarquer Neckara), et certainement très mal avec un fichier binaire (doc,jpg,exe,dll,zip,...)

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/06/2014, 12h04
  2. Réponses: 8
    Dernier message: 25/03/2008, 10h42
  3. Réponses: 10
    Dernier message: 16/06/2006, 13h53
  4. Réponses: 10
    Dernier message: 22/05/2006, 11h45

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