Utiliser une constante de préprocesseur dans une fonction system() ?
Résolu/Fermé
Unnamed_Man
Messages postés
42
Date d'inscription
lundi 5 avril 2021
Statut
Membre
Dernière intervention
12 juin 2021
-
28 mai 2021 à 15:42
[Dal] Messages postés 6203 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 29 janvier 2025 - 28 mai 2021 à 18:48
[Dal] Messages postés 6203 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 29 janvier 2025 - 28 mai 2021 à 18:48
A voir également:
- Utiliser une constante de préprocesseur dans une fonction system() ?
- Fonction si et - Guide
- Utiliser chromecast - Guide
- Reboot system now - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans system - Guide
- Utiliser une tablette comme ecran pc - Guide
3 réponses
[Dal]
Messages postés
6203
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
29 janvier 2025
1 099
Modifié le 28 mai 2021 à 19:13
Modifié le 28 mai 2021 à 19:13
Tu peux faire comme proposé par yg_be, mais, en version plus simple, tu peux aussi faire ceci :
le préprocesseur va remplacer les macros par les chaînes de caractères "35" et "115" qui seront automatiquement concaténées dans le code soumis à compilation. Il faut seulement que 35 et 115 soient des chaînes et non pas des entiers.
N'importe quel compilateur respectant le standard du C doit avoir ce comportement, car il est définit par le standard :
C'est ce comportement qui permet d'écrire aussi plus joliment un code source avec un long printf comme celui-ci :
de la façon suivante :
Cela produit exactement le même résultat, mais c'est plus lisible :-)
Dal
#define WIDTH "35" #define HEIGHT "115" system("mode con cols=" WIDTH " lines=" HEIGHT);
le préprocesseur va remplacer les macros par les chaînes de caractères "35" et "115" qui seront automatiquement concaténées dans le code soumis à compilation. Il faut seulement que 35 et 115 soient des chaînes et non pas des entiers.
N'importe quel compilateur respectant le standard du C doit avoir ce comportement, car il est définit par le standard :
Character string literals that are adjacent tokens are concatenated
into a single character string literal.
C'est ce comportement qui permet d'écrire aussi plus joliment un code source avec un long printf comme celui-ci :
printf("Ceci est une très longue ligne dans un programme C, qui fait plus de 200 caractères de large, ce qui n'est pas recommandé dans la forme d'un code source par la plupart des recommandations de style d'écriture\n");
de la façon suivante :
printf("Ceci est une très longue ligne dans un programme C, qui fait " "plus de 200 caractères de large, ce qui n'est pas recommandé dans " "la forme d'un code source par la plupart des recommandations de " "style d'écriture\n");
Cela produit exactement le même résultat, mais c'est plus lisible :-)
Dal
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
Ambassadeur
1 568
28 mai 2021 à 16:47
28 mai 2021 à 16:47
bonjour,
commence par nous montrer un code qui fonctionne sans constante ni variable.
commence par nous montrer un code qui fonctionne sans constante ni variable.
Unnamed_Man
Messages postés
42
Date d'inscription
lundi 5 avril 2021
Statut
Membre
Dernière intervention
12 juin 2021
5
28 mai 2021 à 16:50
28 mai 2021 à 16:50
Le code fonctionne avec :
system("mode con cols=115 lines=35");
system("mode con cols=115 lines=35");
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
1 568
28 mai 2021 à 16:51
28 mai 2021 à 16:51
connais-tu la fonction sprintf()?
Unnamed_Man
Messages postés
42
Date d'inscription
lundi 5 avril 2021
Statut
Membre
Dernière intervention
12 juin 2021
5
>
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
Modifié le 28 mai 2021 à 17:01
Modifié le 28 mai 2021 à 17:01
Okkk, je te remercie effectivement ça va tout seul avec sprintf().
Encore merci, bonne continuation.
Encore merci, bonne continuation.