Tableau et manipulation d'enregistrement en c
Fermé
nemad
-
13 juil. 2020 à 13:29
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 15 juil. 2020 à 13:02
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 15 juil. 2020 à 13:02
A voir également:
- Tableau d'enregistrement en c
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Enregistrement vidéo écran - Guide
- Enregistrer en pdf - Guide
1 réponse
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
1 083
Modifié le 13 juil. 2020 à 17:09
Modifié le 13 juil. 2020 à 17:09
Salut,
Tu n'expliques pas quel est ton problème.
Alors, pour commencer, le compilateur gcc avec les warnings se plaint de nombreux problèmes, que tu devrais traiter :
Lorsque tu auras tenu compte de ces warnings, que tu les auras compris et corrigé le code, tu pourras te pencher sur d'autres problèmes.
Pas nécessairement dans l'ordre et non exhaustivement :
Tu devrais faire un choix 7 pour sortir du programme au lieu du choix 6.
Tu devrais mettre du contenu dans ta fonction de tri et y implémenter un algorithme de tri ou utiliser la fonction standard
http://www.cplusplus.com/reference/cstdlib/qsort/.
Il te faudra aussi décider si ton fichier de données doit obligatoirement contenir 6 entiers (auquel cas on ne comprend pas comment on peut ajouter ou insérer des données), ou si le nombre de données qu'il peut contenir est au choix de l'utilisateur (auquel cas le code de lecture des données dans tes fonctions de recherche et d'affichage est à revoir).
Tu devrais faire varier la valeur de
Dal
Tu n'expliques pas quel est ton problème.
Alors, pour commencer, le compilateur gcc avec les warnings se plaint de nombreux problèmes, que tu devrais traiter :
$ gcc -Wall 36754754.c 36754754.c: In function ‘menu’: 36754754.c:30:15: warning: implicit declaration of function ‘insererl’; did you mean ‘unsetenv’? [-Wimplicit-function-declaration] case '1' :insererl() ;break; ^~~~~~~~ unsetenv 36754754.c:31:15: warning: implicit declaration of function ‘insererp’; did you mean ‘unsetenv’? [-Wimplicit-function-declaration] case '2' :insererp() ;break; ^~~~~~~~ unsetenv 36754754.c:32:15: warning: implicit declaration of function ‘rechercher’ [-Wimplicit-function-declaration] case '3' :rechercher() ;break; ^~~~~~~~~~ 36754754.c:33:15: warning: implicit declaration of function ‘supprimer’ [-Wimplicit-function-declaration] case '4' :supprimer() ;break; ^~~~~~~~~ 36754754.c:34:15: warning: implicit declaration of function ‘trier’; did you mean ‘strsep’? [-Wimplicit-function-declaration] case '5' :trier() ;break; ^~~~~ strsep 36754754.c:35:15: warning: implicit declaration of function ‘afficher’ [-Wimplicit-function-declaration] case '6' :afficher() ;break; ^~~~~~~~ 36754754.c: At top level: 36754754.c:46:1: warning: return type defaults to ‘int’ [-Wimplicit-int] insererl() ^~~~~~~~ 36754754.c: In function ‘insererl’: 36754754.c:54:11: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int (*)[6]’ [-Wformat=] scanf("%d",&ancien); ~^ ~~~~~~~ 36754754.c: At top level: 36754754.c:61:1: warning: return type defaults to ‘int’ [-Wimplicit-int] insererp() ^~~~~~~~ 36754754.c:66:1: warning: return type defaults to ‘int’ [-Wimplicit-int] rechercher() ^~~~~~~~~~ 36754754.c: In function ‘rechercher’: 36754754.c:76:19: warning: passing argument 1 of ‘strcmp’ makes pointer from integer without a cast [-Wint-conversion] if(strcmp(ancien[i],echerche)==0) ~~~~~~^~~ In file included from 36754754.c:3: /usr/include/string.h:136:32: note: expected ‘const char *’ but argument is of type ‘int’ extern int strcmp (const char *__s1, const char *__s2) ~~~~~~~~~~~~^~~~ 36754754.c:76:23: warning: passing argument 2 of ‘strcmp’ makes pointer from integer without a cast [-Wint-conversion] if(strcmp(ancien[i],echerche)==0) ^~~~~~~~ In file included from 36754754.c:3: /usr/include/string.h:136:50: note: expected ‘const char *’ but argument is of type ‘int’ extern int strcmp (const char *__s1, const char *__s2) ~~~~~~~~~~~~^~~~ 36754754.c: At top level: 36754754.c:88:1: warning: return type defaults to ‘int’ [-Wimplicit-int] supprimer() ^~~~~~~~~ 36754754.c: In function ‘supprimer’: 36754754.c:96:55: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int *’ [-Wformat=] printf("\aERREUR: Impossible d'ouvrir le fichier: %s.\n", ancien); ~^ ~~~~~~ %ls 36754754.c:104:11: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int *’ [-Wformat=] printf("\aERREUR: Impossible d'ouvrir " ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "le fichier: %s.\n", nouveau); ~~~~~~~ 36754754.c:105:20: note: format string is defined here "le fichier: %s.\n", nouveau); ~^ %ls 36754754.c: At top level: 36754754.c:127:6: warning: conflicting types for ‘trier’ void trier() ^~~~~ 36754754.c:34:15: note: previous implicit declaration of ‘trier’ was here case '5' :trier() ;break; ^~~~~ 36754754.c:132:1: warning: return type defaults to ‘int’ [-Wimplicit-int] afficher() ^~~~~~~~ 36754754.c:152:1: warning: return type defaults to ‘int’ [-Wimplicit-int] main(){ ^~~~ 36754754.c: In function ‘insererl’: 36754754.c:60:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ 36754754.c: In function ‘insererp’: 36754754.c:64:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ 36754754.c: In function ‘rechercher’: 36754754.c:86:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ 36754754.c: In function ‘supprimer’: 36754754.c:125:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ 36754754.c: In function ‘afficher’: 36754754.c:151:1: warning: control reaches end of non-void function [-Wreturn-type] } ^
Lorsque tu auras tenu compte de ces warnings, que tu les auras compris et corrigé le code, tu pourras te pencher sur d'autres problèmes.
Pas nécessairement dans l'ordre et non exhaustivement :
Tu devrais faire un choix 7 pour sortir du programme au lieu du choix 6.
Tu devrais mettre du contenu dans ta fonction de tri et y implémenter un algorithme de tri ou utiliser la fonction standard
qsort()accessible par l'entête
<stdlib.h>:
http://www.cplusplus.com/reference/cstdlib/qsort/.
Il te faudra aussi décider si ton fichier de données doit obligatoirement contenir 6 entiers (auquel cas on ne comprend pas comment on peut ajouter ou insérer des données), ou si le nombre de données qu'il peut contenir est au choix de l'utilisateur (auquel cas le code de lecture des données dans tes fonctions de recherche et d'affichage est à revoir).
Tu devrais faire varier la valeur de
ien ligne 76.
Dal
15 juil. 2020 à 13:02
Si tu ne comprends pas certains de ces warnings après avoir tenté de les comprendre et recherché les raisons de leur signalement, n'hésite pas à nous dire ce que tu ne comprends pas.