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.
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>.
Il y a ceux qui font des sauvegardes, et ceux qui n'ont pas encore eu d'incident....
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.
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
Le Tout est souvent plus grand que la somme de ses parties.
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é :
(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).
[...] 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).
Il y a ceux qui font des sauvegardes, et ceux qui n'ont pas encore eu d'incident....
Il y a ceux qui font des sauvegardes, et ceux qui n'ont pas encore eu d'incident....
Le Tout est souvent plus grand que la somme de ses parties.