1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2013
    Messages : 106
    Points : 83
    Points
    83

    Par défaut Modification d'un fichier en C

    Salut
    J'ai une préoccupation en C
    Je veux modifier un fichier texte. je me positionne là ou je veux être dans le fichier, Par modification, j'entends supprimer des caractères et si je veux j'inscris de nouveaux caractères à cet endroit.
    Je ne sais pas comment m'y prendre.
    Merci.

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2015
    Messages : 517
    Points : 2 655
    Points
    2 655

    Par défaut

    Bonjour,

    Une fichier c'est une zone localisée d'octets. On ne peut pas enlever des octets ou en ajouter sauf en fin de fichier. En accès binaire, on peut en plus changer la valeurs d'octets dans le fichier.

    Pour toutes les autres modifications, le seul moyen est :
    a) on crée un autre fichier par une copie séquentielle du fichier initial
    b) les zones à modifier sont écrites elles aussi dans la séquence
    c) l'autre fichier est fermé
    d) le fichier initial est renommé
    e) l'autre fichier prend le nom du fichier initial
    f) le fichier initial renommé peut être supprimé si tout s'est bien passé. Sinon on peut restaurer le fichier initial à son nom initial.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2013
    Messages : 106
    Points : 83
    Points
    83

    Par défaut

    Si c'est le seul moyen de modifier un fichier texte, c'est que pour un gros fichier, le temps de traitement doit être vraiment long.
    Imaginons un dictionnaire de plus 10000 mots, je veux modifier juste un caractère de ce texte; et la je suis obligé de copier 10000 mots
    dans autre un fichier!
    Ouf!
    Je vais quand prendre cet algorithme, j'ai pas le choix, j’attends quand même un plus optimisé s'il y en a.
    Merci @dalfab.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    26 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 26 431
    Points : 38 045
    Points
    38 045

    Par défaut

    Tant que le fichier sera du texte brut, tu n'auras pas mieux.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2013
    Messages : 106
    Points : 83
    Points
    83

    Par défaut

    Citation Envoyé par Médinoc
    Tant que le fichier sera du texte brut, tu n'auras pas mieux.
    Ok

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2013
    Messages : 106
    Points : 83
    Points
    83

    Par défaut

    Existe-t-il une fonction qui crée un fichier texte ?
    Je veux créer pour le cas un fichier temporaire, mais quand j'ai fouillé la doc, c'est FILE * tmpfile ( void ) mais est valable seulement pour les fichiers binaires, ce qui ne convient pas ici.
    Merci

  7. #7
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2007
    Messages
    4 894
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 4 894
    Points : 16 090
    Points
    16 090

    Par défaut

    Quel soucis avec sa nature binaire? sa binarité ou non est totalement transparent à ton programme (car l'information est connue dans le FILE pointé)

    Ne pas utiliser freopen, car le fichier ne serait plus automatiquement détruit.

    Le fichier est détruit par le programme quand il est fermé, et selon les systèmes, un fichier peut ne pas pouvoir être ouvert plusieurs fois simultanément.
    Donc ce fichier temporaire ne devrait pas être lu par l'extérieur.

    Sinon, tu peux utiliser tmpnam + fopen (mais tu dois trouver comment détruire le dit fichier).
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    26 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 26 431
    Points : 38 045
    Points
    38 045

    Par défaut

    Citation Envoyé par free_01_binairy Voir le message
    Existe-t-il une fonction qui crée un fichier texte ?
    Je veux créer pour le cas un fichier temporaire, mais quand j'ai fouillé la doc, c'est FILE * tmpfile ( void ) mais est valable seulement pour les fichiers binaires, ce qui ne convient pas ici.
    Dans ce sens-là, ce n'est pas un problème, car seul le FILE retourné peut lire le contenu du fichier, et la lecture et l'écriture en mode binaire sont sans pertes.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    5 798
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 5 798
    Points : 15 891
    Points
    15 891
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par free_01_binairy Voir le message
    Imaginons un dictionnaire de plus 10000 mots, je veux modifier juste un caractère de ce texte; et la je suis obligé de copier 10000 mots
    dans autre un fichier!
    Tu peux changer les caractères d'un fichier mais en respectant la règle "1 pour 1".
    - Tu ouvres ton fichier en mode "r+"
    - Tu te positionnes juste avant le caractère à changer
    - Tu écris le caractère de remplacement
    - Tu fermes le fichier

    Le seul soucis c'est le positionnement. Parce que pour savoir si tu es sur le bon caractère il te faut le lire. Mais quand tu l'as lu, tu n'es plus "juste devant" mais "juste derrière". Il faut alors jongler avec fseek() (et éventuellement ftell())...

    Citation Envoyé par free_01_binairy Voir le message
    mais est valable seulement pour les fichiers binaires, ce qui ne convient pas ici.
    Unix/Linux ne fait absolument aucune distinction entre "fichier binaire" et "fichier texte". Pour la simple raison qu'en réalité il n'y en a aucune. En effet, la nature d'un fichier n'est pas liée au contenu du fichier mais à l'outil qui le lit. Prends un fichier contenant "0x0a 0x0e 0x55 ..." ben si tu le lis via "notepad" peut-être que tu verras des phrases; et si tu le lis avec "vlc" peut-être que tu verras un film. Mais pour l'ordi, cela fait-il une différence ? Et même pour toi si tu réfléchis bien, cela fait-il une différence ???

    En réalité cette distinction de m.... a été imposée par le monde zindow qui a "décrété" qu'un fichier texte serait un fichier composé de lignes (jusque là ok) mais chaque ligne terminée par deux caractères ; le premier '\r' symbolisant le retour du charriot en début de ligne, et le second '\n' symbolisant la rotation du charriot qui fait passer le papier sur la ligne suivante, reproduisant ainsi le fonctionnement d'une machine à écrire.
    Sauf que celui qui a imaginé reproduire ce schéma n'a pas réfléchi que si séparer les deux opérations se justifie sur une machine (on peut en effet faire revenir le charriot sans faire avancer le papier ce qui permet, en réécrivant en blanc au même endroit, d'effacer le texte tapé), elles n'apportent aucune plus value en informatique.
    Et à cause de cette débilité on est maintenant obligés de préciser la nature du fichier lors des transferts ftp hétérogènes (Unix vers Windows et inversement) pour que le protocole transforme (ou ne transforme pas) les lignes lors des transferts ; et c'est aussi pour ça que le blocnote de cet os crétin ne peut pas lire les fichiers textes Unix (toutes les lignes apparaissent concaténées en une seule) lorsqu'on les passe par clef USB sans les avoir transformés au préalable via "unix2dos".

    Donc quand tu es sur Unix, un ".sh", ".txt", ".mp3" ça reste de simples fichiers contenant de simples octets que tu traiteras de la même et simple façon (ouvrir, lire, fermer)...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    6 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 6 848
    Points : 14 346
    Points
    14 346

    Par défaut

    Ce qui est bizarre en plus car ça devrait plutôt être les systèmes Unix qui génère les 2 caractères en mode "machine à écrire". Car Unix étant plus ancien que Windows, celui-ci a connu l'usage des télétypes. (périphérique d'entrées-sortie utilisé avant les écrans, et via une liaison Telecom : A cette époque, on se connectait sur un mainframe).

    Dans ton cas, si tu sais que tu dois modifier du texte, tu peux aussi le charger dans un buffer, effectuer les modifications, puis le réécrire. Tu pourras alors te déplacer dans ce buffer soit caractère par caractère (getc/putc), soit ligne par ligne (gets/puts). pou la famille puts/gets, attention à la gestion du retour chariot et de \0. La solution fseek et ftell reste bien entendu valable, et avec la gestion de cache de l'OS, je suis même pas sûr qu'il y ai une différence de perf.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  11. #11
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    26 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 26 431
    Points : 38 045
    Points
    38 045

    Par défaut

    Ce qui est bizarre en plus car ça devrait plutôt être les systèmes Unix qui génère les 2 caractères en mode "machine à écrire". Car Unix étant plus ancien que Windows, celui-ci a connu l'usage des télétypes.
    C'est là qu'on voit l'historique de compatibilité de Windows: Windows est basé sur DOS, lui-même basé sur CP/M...
    D'ailleurs, c'est à CP/M (qui n'avait pas de répertoires, seulement des fichiers) qu'on doit les paramètres préfixés par un slash, ce qui a forcé Microsoft à choisir autre chose comme séparateur entre répertoires et fichier...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2013
    Messages : 106
    Points : 83
    Points
    83

    Par défaut

    Citation Envoyé par dalfab
    Pour toutes les autres modifications, le seul moyen est :
    a) on crée un autre fichier par une copie séquentielle du fichier initial
    b) les zones à modifier sont écrites elles aussi dans la séquence
    c) l'autre fichier est fermé
    d) le fichier initial est renommé
    e) l'autre fichier prend le nom du fichier initial
    f) le fichier initial renommé peut être supprimé si tout s'est bien passé. Sinon on peut restaurer le fichier initial à son nom initial.
    Dans ce poste de @dalfab, je comprends qu'on ne peut pas modifier un fichier directement si c'e n'est qu'a le recopier en insérant les modifications qu'on souhaite à l'endroit voulu.
    Citation Envoyé par Sve@r
    Tu peux changer les caractères d'un fichier mais en respectant la règle "1 pour 1".
    - Tu ouvres ton fichier en mode "r+"
    - Tu te positionnes juste avant le caractère à changer
    - Tu écris le caractère de remplacement
    - Tu fermes le fichier
    Ici @Sve@r, Me dit si je comprends bien qu'il est possible de le modifier sans le recopier, faut juste me placer au bon endroit.
    Il y a une énorme contradiction entre les deux propos.

    Citation Envoyé par Sve@r
    Tu peux changer les caractères d'un fichier mais en respectant la règle "1 pour 1".
    - Tu ouvres ton fichier en mode "r+"
    - Tu te positionnes juste avant le caractère à changer
    - Tu écris le caractère de remplacement
    - Tu fermes le fichier
    Je me positionne, pas de problème
    j’écris ce que je veux, Mais comment faire disparaître ce que les caractères que je veux pas qui se trouvent juste après les caractères que je viens d'ecrire. C'est ça mon probleme.

    Parlant de positionnement
    Citation Envoyé par Sve@r
    Le seul soucis c'est le positionnement. Parce que pour savoir si tu es sur le bon caractère il te faut le lire. Mais quand tu l'as lu, tu n'est plus "juste devant" mais "juste derrière". Il faut alors jongler avec fseek() (et éventuellement ftell())...
    Quand on lit un caractère ou une chaîne de caractères pour s'assurer qu'on a la bonne valeur à supprimer, on n'est plus au bon endroit. donc faut reculer du nombre de caractères lu.
    Voici ce que j'ai préconisé pour mon cas:
    je lis une ligne entière avec fgets(....) en donnant le nombre de caracteres 1024 pour m'assurer que la ligne entière pourra passer.je récupère la position de fin de lecture (parce que le curseur s'est deplacé ) et pour revenir en arriere (me placer en debut de ligne) je fais la position lue soustraite du nombre de caracteres lus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     *pos= (fgetpos(file, pos) -strlen(s) );
    Pour comprendre d'avantage voici comment mon fichier est organisé (en fait il s'agit d'un carnet d'adresse)

    Jean
    Nice
    4587694766
    Yves
    Berlin
    865755436
    Anne
    Nantes
    89357245
    Supprimer/modifier Anne ou Jean de la liste de mes contacts?

    Citation Envoyé par Sve@r
    Et à cause de cette débilité on est maintenant obligés de préciser la nature du fichier lors des transferts ftp hétérogènes (Unix vers Windows et inversement) pour que le protocole transforme (ou ne transforme pas) les lignes lors des transferts ; et c'est aussi pour ça que le blocnote de cet os crétin ne peut pas lire les fichiers textes Unix (toutes les lignes apparaissent concaténées en une seule) lorsqu'on les passe par clef USB sans les avoir transformés au préalable via "unix2dos".
    Ah! Oui, tu en as vraiment contre Windows...

  13. #13
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2007
    Messages
    4 894
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 4 894
    Points : 16 090
    Points
    16 090

    Par défaut

    En gros, tu remplacer un caractère par un autre dans un fichier, sans avoir à le recopier.
    Pour ajouter ou supprimer ne serait-ce qu'un seul caractère, il faut copier la partie avant, ajouter ton supplément (ou sauter la partie à effacer) et copier le reste du fichier.

    Si ton fichier contient ABCDE, tu peux le modifier en place pour qu'il contienne ABUDE.
    mais pour supprimer le C, il faut copier AB sauter le C et copier DE.

    Par contre, si tu charge ton fichier dans une liste d'entrées, tu peux faire tout ce que tu veux de ta liste, il suffit de réécrire le fichier après toutes les modifications.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  14. #14
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    5 798
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 5 798
    Points : 15 891
    Points
    15 891
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par free_01_binairy Voir le message
    Dans ce poste de @dalfab, je comprends qu'on ne peut pas modifier un fichier directement si c'e n'est qu'a le recopier en insérant les modifications qu'on souhaite à l'endroit voulu.

    Ici @Sve@r, Me dit si je comprends bien qu'il est possible de le modifier sans le recopier, faut juste me placer au bon endroit.
    Il y a une énorme contradiction entre les deux propos.
    Aucune contradiction. dafalb a donné les grandes généralités mais il a aussi écrit la petite remarque "on peut en plus changer la valeurs d'octets dans le fichier". C'est cette remarque à propos de ce cas particulier que j'ai développé. Si tu as "ABCDEABCDEABCDE" et que tu veux avoir en final "ABUDXABUDXABUDX" tu cherches le 'C'", puis tu recules d'un octet, puis tu écris 'U', et ce jusqu'à la fin du fichier. puis tu reviens au début et tu fais la même chose pour E/X. Mais si tu veux remplacer le second "ABCDE" par "toto mange de la brioche" ben ce sera moins évident...

    Citation Envoyé par free_01_binairy Voir le message
    Je me positionne, pas de problème
    j’écris ce que je veux, Mais comment faire disparaître ce que les caractères que je veux pas qui se trouvent juste après les caractères que je viens d'ecrire. C'est ça mon probleme.
    Il existe la fonction ftruncate() qui permet de "sectionner" un fichier à une certaine taille. Donc tant que les modifs entrent dans ces catégories "remplacer un pour un" et "supprimer une fin devenue inutile" ça peut aller assez vite. Mais si les modifs deviennent plus complexes alors à toi de te débrouiller avec seulement ces outils. Ou alors passer par un autre biais (dont un possible est de tout copier en mémoire, modifier la mémoire puis tout réécrire).

    Citation Envoyé par free_01_binairy Voir le message
    Pour comprendre d'avantage voici comment mon fichier est organisé (en fait il s'agit d'un carnet d'adresse)
    Supprimer/modifier Anne ou Jean de la liste de mes contacts?
    Dans ce cas précis (petit fichier, données à géométrie variable), moi je stockerais tout le carnet en mémoire (tableau de structures ou liste chainée s'il faut gérer un ordre particulier). Ensuite je ferais mes insertions/suppressions dans la mémoire. Puis en final une écriture complète du fichier.
    Bien entendu on considère qu'il s'agit d'un exercice d'apprentissage et de manipulations. Parce que s'il s'agissait d'un vrai projet opérationnel alors je passerais par des outils plus puissants dans lesquels je n'ai pas à réinventer la roue (bdd par exemple)...

    Citation Envoyé par free_01_binairy Voir le message
    Ah! Oui, tu en as vraiment contre Windows...
    On n'a pas les mêmes métiers. Si ton but est de passer le temps entre deux parties de CODMW à raconter ta vie sur facebook à des gens qui n'en ont rien à cirer, alors Windows sera exactement ce qu'il te faut. Si maintenant tu veux t'orienter vers une informatique plus professionnelle, alors on verra ce que tu feras...
    Et puis j'ai tout à fait le droit de ne pas aimer Windows. Mais accessoirement j'aurais préféré lire tes explications justifiant qu'une fin de ligne soit représentée par deux caractères au lieu de ces smileys "grosse colère" ne traduisant finalement qu'une absence totale d'argumentaire...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  15. #15
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    26 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 26 431
    Points : 38 045
    Points
    38 045

    Par défaut

    Tu sais, le \r\n date de longtemps avant Windows, et même d'avant les systèmes unixoïdes.
    Windows s'est contenté d'être compatible avec l'existant (bien sûr, les linuxiens se foutent de la compatibilité, vu qu'il n'y a pas des décennies de code propriétaire sous linux...).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  16. #16
    Membre chevronné
    Avatar de CodeurPlusPlus
    Profil pro
    Inscrit en
    septembre 2013
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2013
    Messages : 635
    Points : 2 241
    Points
    2 241

    Par défaut

    Quelle est la taille des fichiers à manipuler ?

    A moins qu'ils soient très grands, tu as la méthode bête :

    - charger le fichier dans un buffer ;
    - modifier ce que tu veux dedans ;
    - réécrire le fichier.

  17. #17
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2013
    Messages : 106
    Points : 83
    Points
    83

    Par défaut

    Citation Envoyé par sve@r
    Et à cause de cette débilité on est maintenant obligés de préciser la nature du fichier lors des transferts ftp hétérogènes (Unix vers Windows et inversement) pour que le protocole transforme (ou ne transforme pas) les lignes lors des transferts ; et c'est aussi pour ça que le blocnote de cet os crétin ne peut pas lire les fichiers textes Unix (toutes les lignes apparaissent concaténées en une seule) lorsqu'on les passe par clef USB sans les avoir transformés au préalable via "unix2dos".
    Citation Envoyé par sve@r
    Citation Envoyé par free_01_binairy Voir le message
    Ah! Oui, tu en as vraiment contre Windows...
    On n'a pas les mêmes métiers. Si ton but est de passer le temps entre deux parties de CODMW à raconter ta vie sur facebook à des gens qui n'en ont rien à cirer, alors Windows sera exactement ce qu'il te faut. Si maintenant tu veux t'orienter vers une informatique plus professionnelle, alors on verra ce que tu feras...
    Et puis j'ai tout à fait le droit de ne pas aimer Windows. Mais accessoirement j'aurais préféré lire tes explications justifiant qu'une fin de ligne soit représentée par deux caractères au lieu de ces smileys "grosse colère" ne traduisant finalement qu'une absence totale d'argumentaire...
    J'ai réfléchi à tout ce que tu dis ici et je me sens un peu perplexe. Chez nous on dit la main qui demande est toujours en dessous de celle qui donne. Mais cette main qui demande n'est pas pour autant dépourvue de dignité. C'est toi qui est colère contre Windows et tu l'exprime bien dans ton post et le smiley que j'ai mis est juste pour montrer ta colère. Moi même je suis sur Linux Ubuntu et ce depuis 3 ans. Tu traites Windows de crétin. Pourquoi? Tu ne saurais toi même donner la réponse. Ce n'est pas parce que tu n'aimes le système que tu peux le traiter de crétin ou qu'il fait les choses différemment de ta vision. Je suis désolé. On a beau haïr Windows, on est rattrapé par la réalité. Il s'impose, utilisé à presque 80% sur les PC dans le monde. le simple fait de traiter son retour à la ligne différemment de Linux n'influe pas sur les utilisateur finals car ceux-ci ne sont pas orientés "vers une informatique professionnelle" comme tu le dis. Il est "crétin" mais s'impose face à linux. Comment tu peux justifier cela? Ah oui je sais. On dira que ces utilisateurs sont aussi crétin

    Parlant d'argument sur les deux caractères représentant la fin ligne chez Windows, je n'en ai pas, raison pour laquelle je viens demander ton aide pour créer correctement un fichier afin que demain, tu ne me traites pas comme tu traites Windows aujourd'hui.
    Je te prie d’être indulgent envers ma pauvre personne manquant de connaissance et qui va vers toi pour en avoir.
    Merci.

Discussions similaires

  1. [Properties] Modif d'un fichier properties avec Commentaires
    Par snetechen dans le forum java.util
    Réponses: 3
    Dernier message: 19/10/2006, 16h00
  2. Temps écoulé pour la modification d'un fichier
    Par pouet33 dans le forum Langage
    Réponses: 4
    Dernier message: 06/09/2005, 12h41
  3. Réponses: 20
    Dernier message: 17/03/2005, 15h26
  4. Est-il possible de détecter la modification d'un fichier ?
    Par Kokito dans le forum API, COM et SDKs
    Réponses: 13
    Dernier message: 25/06/2004, 10h42
  5. [langage] Date de modification d'un fichier
    Par Cyspak dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2003, 15h49

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