Partage
  • Partager sur Facebook
  • Partager sur Twitter

Trier un fichier

    2 janvier 2022 à 19:06:25

    Bonjour,
    j'ai un fichier txt contenant les lignes(chaine de caractères)
    je veux le trier sans utiliser untableau ou fichier tmp en intermediare.
    pouvez vous m'aider.
    merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      2 janvier 2022 à 19:34:06

      Bonjour,

      pourquoi vouloir le faire en C ?

      C'est quoi ton environnement ?

      Le trier sur quels critère(s) ?

      • Partager sur Facebook
      • Partager sur Twitter
        2 janvier 2022 à 20:29:25

        Pas de tableau ? Même pas un tableau de char pour stoker une ligne ?

        • Partager sur Facebook
        • Partager sur Twitter
          2 janvier 2022 à 20:30:35

          Hello,

          Avec l'installation de mingw (sous windows), il y a le programme sort.exe dans c:\mingw\msys\1.0

          Usage: sort [OPTION]... [FILE]...
          Write sorted concatenation of all FILE(s) to standard output.
          
          Mandatory arguments to long options are mandatory for short options too.
          Ordering options:
          
            -b, --ignore-leading-blanks  ignore leading blanks
            -d, --dictionary-order      consider only blanks and alphanumeric characters
            -f, --ignore-case           fold lower case to upper case characters
            -g, --general-numeric-sort  compare according to general numerical value
            -i, --ignore-nonprinting    consider only printable characters
            -M, --month-sort            compare (unknown) < `JAN' < ... < `DEC'
            -n, --numeric-sort          compare according to string numerical value
            -r, --reverse               reverse the result of comparisons
          
          Other options:
          
            -c, --check               check whether input is sorted; do not sort
            -k, --key=POS1[,POS2]     start a key at POS1, end it at POS2 (origin 1)
            -m, --merge               merge already sorted files; do not sort
            -o, --output=FILE         write result to FILE instead of standard output
            -s, --stable              stabilize sort by disabling last-resort comparison
            -S, --buffer-size=SIZE    use SIZE for main memory buffer
            -t, --field-separator=SEP  use SEP instead of non-blank to blank transition
            -T, --temporary-directory=DIR  use DIR for temporaries, not $TMPDIR or /tmp;
                                        multiple options specify multiple directories
            -u, --unique              with -c, check for strict ordering;
                                        without -c, output only the first of an equal run
            -z, --zero-terminated     end lines with 0 byte, not newline
                --help     display this help and exit
                --version  output version information and exit
          
          POS is F[.C][OPTS], where F is the field number and C the character position
          in the field.  OPTS is one or more single-letter ordering options, which
          override global ordering options for that key.  If no key is given, use the
          entire line as the key.
          
          SIZE may be followed by the following multiplicative suffixes:
          % 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.
          
          With no FILE, or when FILE is -, read standard input.
          
          *** WARNING ***
          The locale specified by the environment affects sort order.
          Set LC_ALL=C to get the traditional sort order that uses
          native byte values.
          
          Report bugs to <bug-coreutils@gnu.org>.
          



          • Partager sur Facebook
          • Partager sur Twitter

          Il y a ceux qui font des sauvegardes, et ceux qui n'ont pas encore eu d'incident....

            2 janvier 2022 à 20:37:42

            edgarjacobs a écrit:

            Avec l'installation de mingw (sous windows), il y a le programme sort.exe dans c:\mingw\msys\1.0

            Oui, mais qu'est ce qui te dit qu'il n'utilise pas les tableaux ou un fichier temporaire ?

            • Partager sur Facebook
            • Partager sur Twitter
              2 janvier 2022 à 22:23:47

              La question en elle-même n'a pas de sens (trier un fichier texte veut tout et rien dire) avant que le PO nous explique un peu mieux son problème, et comme à l'accoutumée ça sent le problème XY.

              Du coup avant d'avoir des réponses aux questions on ne pourra que se perdre en conjectures.

              • Partager sur Facebook
              • Partager sur Twitter
                2 janvier 2022 à 23:08:10

                @rouloude: tu as tout à fait raison. Je donnais cette info pour ne pas devoir écrire une seule ligne de code (et être certain que ça fonctionne :-) )
                • Partager sur Facebook
                • Partager sur Twitter

                Il y a ceux qui font des sauvegardes, et ceux qui n'ont pas encore eu d'incident....

                  3 janvier 2022 à 2:17:01

                  Il y a déjà un programme sort dans Windows:
                  C:\Windows\System32\sort.exe
                  On pourrait suggérer comme on faisait autrefois avec des ordi ayant peu de mémoire: faire un polyphase merge sur bande magnétique.

                  Et même là, si on n'a pas la mémoire pour deux lignes ou blocs, on ne va pas loin ...

                  -
                  Edité par PierrotLeFou 3 janvier 2022 à 3:37:11

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Le Tout est souvent plus grand que la somme de ses parties.

                    3 janvier 2022 à 11:42:43

                    webmasterdebutant a écrit:

                    Bonjour,
                    j'ai un fichier txt contenant les lignes(chaine de caractères)
                    je veux le trier sans utiliser untableau (...)


                    Comme rouIoude l'a observé, les chaînes de caractères, en C, sont stockées sous forme de tableau de char terminés par le caractère '\0'. Donc, si tu tries des chaînes, tu vas nécessairement utiliser des tableaux pour les stocker ou, en tout cas, utiliser l'opérateur [] pour y accéder en mémoire.

                    Pour trier les lignes issues du fichier, tu vas devoir les stocker à mesure que tu les lis.

                    S'il t'est interdit de les stocker sous la forme de tableau de chaînes, mais que tu peux les stocker en mémoire vive autrement, alors stocke les sous une autre forme :-)

                    Par exemple, un arbre binaire, que tu pourrais stocker sous la forme d'une liste doublement chaînée, te permettrait d'utiliser un algorithme comme celui ci de construction d'un arbre partiellement ordonné :

                    https://rmdiscala.developpez.com/cours/LesChapitres.html/Cours4/TArbrechap4.6.htm

                    (le code Pascal proposé sur cette page propose une implémentation de l'arbre sous forme de tableau, mais tu peux aussi le faire sous la forme d'une liste)

                    En revanche, si la raison pour laquelle tu ne peux pas utiliser de tableau est que tu ne peux pas (ou tu ne dois pas) stocker tout le contenu du fichier en mémoire, que ce soit sous forme de tableau ou autrement, alors ton problème est différent et tu devrais clarifier ta question pour nous éviter de donner des réponses correctes à des questions qui ne sont pas celles que tu te poses (ou que tu devrais te poser).

                    -
                    Edité par Dlks 3 janvier 2022 à 11:43:07

                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 janvier 2022 à 12:07:02

                      Dlks a écrit:

                      [...] alors ton problème est différent et tu devrais clarifier ta question pour nous éviter de donner des réponses correctes à des questions qui ne sont pas celles que tu te poses (ou que tu devrais te poser).

                      -
                      Edité par Dlks il y a 21 minutes


                      L'essence même d'un problème XY … très fréquent avec les débutants qui de surcroît savent rarement bien poser les questions sur les forums.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Trier un fichier

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      • Editeur
                      • Markdown