Voilà suis bloqué sur un programme tout bête. J'ai créé un programme qui permet de trier dans un ordre alpha numérique des chaînes de caractères contenus dans un tableau.
Mais ma question est comment on peut faire de sorte que lorsqu'on exécute le programme : il demande les chaîne de caractères (avec un scanf mais la question est comment avec un char const *array?) et ensuite le programme trie et crée un nouveau fichier dans lequel le résultat sera sauvegardé.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *myFile=NULL;
static void consoleWrite (char const **a, size_t b)
{
size_t i;
for (i = 0; i < b; i++)
fprintf (myFile, "%s ", a[i]);
printf ("\n");
}
static int string_cmp (void const *i, void const *j)
{
char const *const *pointerI = i;
char const *const *pointerJ = j;
return strcmp (*pointerJ, *pointerI); // comparaison de la chaine de caractère !
}
int main (void)
{
char const *array[] = {
"01","fdf","gffg","FRSTM-PFOV1DK","FRSTM-KEFF2OQHT"
};
myFile =fopen("file.ini", "a+");
long array_size = sizeof array / sizeof *array;
qsort (array,array_size, sizeof *array, string_cmp);
consoleWrite (array, array_size);
printf("Le tri a été effectué ! ");
return 0;
}
Là par exemple c'est mon tableau array qui fait ça ?
est-ce que vous pouvez m'aider suis bloqué depuis 3 heures ?
Merci à vous les camarades !
- Edité par meteor141421356237 25 mars 2020 à 21:19:24
Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse.
désolé, je me suis mal exprimé ce que je veux c'est que les valeurs qu'on rentre avec scanf soit stocké dans la variable array et ensuite avec cette variable je fais le tri.
Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse.
for (int i = 0 ; int < nb_de_mots_a_lire ; i++)
{
char mot[TAILLEMAXI] ;
printf("Entrer un mot : ") ;
scanf("%s", mot) ;
strcpy(array[i], mot) ;
}
(Et on peut sûrement se passer de la variable 'mot' en mettant directement 'array[i]' dans le 'scanf'. Disons que procéder comme je l'ai fait aiderait peut-être à contrôler que le 'scanf' a bien lu un mot avant de le mettre dans le tableau.)
J''avais déjà essayé mais ça ne marche pas. (en fait j'ai un char const *array) et j'aimerais changer ce char de sorte qu'on puisse le modifier. Sinon je vois pas comment je peux faire strcpy
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *myFile = NULL;
static void consoleWrite (char **a, size_t b)
{
size_t i;
for (i = 0; i < b; i++)
fprintf (myFile, "%s \n", a[i]);
printf ("\n");
}
int string_cmp (void const *i, void const *j)
{
char const *const *pointerI = i;
char const *const *pointerJ = j;
return strcmp (*pointerJ, *pointerI); // comparaison de la chaine de caractère !
}
int main(void) {
int array_size = 0;
char **array;
char buffer[256];
myFile = fopen("file.ini", "a+");
printf("Veuillez entrez la taille de votre liste (nombre entier): ");
scanf("%d", &array_size);
array = malloc(array_size * sizeof(char*));
for(int i = 0; i < array_size; i++) {
printf("N° %d de série:\n ", i);
scanf("%s", buffer);
array[i] = malloc(strlen(buffer) + 1);
strncpy(array[i], buffer, strlen(buffer) + 1);
}
qsort(array, array_size, sizeof *array, string_cmp);
consoleWrite(array, array_size);
printf("Le tri a été effectué ! ");
for(int i = 0; i < array_size; i++)
free(array[i]);
free(array);
return 0;
}
résolu. merci à tous
- Edité par meteor141421356237 25 mars 2020 à 23:14:28
Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse.
Un algorithe de tri alphanumérique
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse.
Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse.
Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse.