IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Programme couleurs console qui ne s'affiche pas à l'exécution


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Programme couleurs console qui ne s'affiche pas à l'exécution
    Bonjour,
    Je débute en C et j'ai quelques soucis lors de l'exécution de mon programme, qui est censé afficher une console dont les couleurs sont choisies par les préférences de l'utilisateur. Voici le programme :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    #include <stdio.h>
    #include <stdlib.h>
     
    int main() 
    {
    	char fond1="Bf",fond2="Bg",fond3="Gc",fond[2]; 
    	char police1="C",police2="B",police[3];
    	int f1=strcmp(fond1,fond),f2=strcmp(fond2,fond),f3=strcmp(fond3,fond);
    	int p1=strcmp(police1,police),p2=strcmp(police2,police);
     
    	printf("Bienvenue!\n");
    	system("PAUSE");
     
    	printf("Nous allons choisir les couleurs de la console.\n");
        system("PAUSE");
     
        printf("Quelle couleur de fond choisissez-vous?\n");
     
        printf("'Bf' pour Bleu fonce.\n");
        printf("'Bg' pour Bleu gris.\n");
        printf("'Gc' pour Gris clair.\n");
     
    	scanf("%s",fond);
     
    	if(f1==0)
    	{
    		printf("Vous avez choisi un Bleu fonce.\n");
    		system("PAUSE");
     
    		printf("Quelle couleur de police voulez-vous utiliser?\n");
    		printf("'C' pour Cyan.\n");
    		printf("'B' pour Blanc.\n");
    		scanf("%s",police);
     
    		            if(p1==0)
    	                {
    			        	system("COLOR 1B");
    						printf("Félicitations! La suite du programme va s'effectuer sur un fond noir et utiliser une police cyan.\n");
    				        system("PAUSE");
    					}
     
    		            if(p2==0)
    	                {
    			        	system("COLOR 1F");
    						printf("Félicitations! La suite du programme va s'effectuer sur un fond noir et utiliser une police blanche.\n");
    				        system("PAUSE");	
    					}
     
    	}
     
    		if(f2==0)
    	{
    		printf("Vous avez choisi un Bleu gris.\n");
    		system("PAUSE");
     
    		printf("Quelle couleur de police voulez-vous utiliser?\n");
    		printf("'C' pour Cyan.\n");
    		printf("'B' pour Blanc.\n");
     
    		            if(p1==0)
    	                {
    			        	system("COLOR 3B");
    						printf("Félicitations! La suite du programme va s'effectuer sur un fond bleu gris et utiliser une police cyan.\n");
    				        system("PAUSE");
    					}
     
    		            if(p2==0)
    	                {
    			        	system("COLOR 3F");
    						printf("Félicitations! La suite du programme va s'effectuer sur un bleu gris et utiliser une police blanche.\n");
    				        system("PAUSE");
    					}
     
    	}				
     
    		if(f3==0)
    	{
    		printf("Vous avez choisi un Gris clair.\n");
    		system("PAUSE");
    		system("CLS");
     
    		printf("Quelle couleur de police voulez-vous utiliser?\n");
    		printf("'C' pour Cyan.\n");
    		printf("'B' pour Blanc.\n");
     
    		            if(p1==0)
    	                {
    			        	system("COLOR 7B");
    						printf("Félicitations! La suite du programme va s'effectuer sur un fond gris clair et utiliser une police cyan.\n");
    				        system("PAUSE");
    			            system("CLS");	
    					}
     
    		            if(p2==0)
    	                {
    			        	system("COLOR 7F");
    						printf("Félicitations! La suite du programme va s'effectuer sur un gris clair et utiliser une police blanche.\n");
    				        system("PAUSE");
    			            system("CLS");	
    					}
     
    	}					
     
    	return 0;
    }

    //////////////////////////////////////////////////////////////////

    Et voici ce qu'il m'affiche après compilation et exécution :


    Je vous remercie d'avance pour votre aide !

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Bonjour et bienvenue,

    Il faut impérativement nous dire quel est ton compilateur et avec quel système d'exploitation tu travailles. Mais d'ores et déja, « 3221225477 » s'écrit « C0000005 » en hexadécimal, ce qui correspond à un code d'erreur Windows, qui correspond grosso-modo à une segfault.

    Il y a probablement beaucoup de points à contrôler dans ton programme, mais à la ligne 6, on lit déjà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char fond1="Bf",fond2="Bg",fond3="Gc",fond[2];
    Si tu lis deux caractères dans ton buffer (vérifié quelques lignes plus loin), alors il faut en prévoir au moins trois pour que scanf() puisse y déposer le '\0' de fin de chaîne. Donc il faut écrire au moins

    … dans ton programme. Et en réalité, puisque ton scan() lit directement le clavier, je te suggère d'utiliser un buffer d'au moins 80 caractères pour éviter les plantages si jamais tu tapes un caractère de trop, puis de converger rapidement vers fgets() à la place.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    Puis char fond1="Bf" est faux, une chaîne de caractères c'est char*
    char police1="C" est faux aussi, un caractère s'écrit entre simple quote ('C')
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Tout d'abord, merci pour vos réponses.
    J'utilise Dev-C++ 5.11 et mon système d'exploitation est Windows 10, et une version 64 bits est exécutée.

    J'ai tenté de modifier le programme sous vos conseils, mais Windows me renvoie toujours un code erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main() 
    {
    	char fond1[3]="Bf",fond2[3]="Bg",fond3[3]="Gc",fond[80]; 
    	char police1='C',police2='B';
    	char police[80];
    	int f1=strcmp(fond1,fond),f2=strcmp(fond2,fond),f3=strcmp(fond3,fond);
    	int p1=strcmp(police1,police),p2=strcmp(police2,police);
     
    	printf("Bienvenue!\n");
    	system("PAUSE");
     
    	printf("Nous allons choisir les couleurs de la console.\n");
        system("PAUSE");
     
        printf("Quelle couleur de fond choisissez-vous?\n");
     
        printf("'Bf' pour Bleu fonce.\n");
        printf("'Bg' pour Bleu gris.\n");
        printf("'Gc' pour Gris clair.\n");	
    	scanf("%s",fond);
     
    	if(f1==0)
    	{
    		printf("Vous avez choisi un Bleu fonce.\n");
    		system("PAUSE");
     
    		printf("Quelle couleur de police voulez-vous utiliser?\n");
    		printf("'C' pour Cyan.\n");
    		printf("'B' pour Blanc.\n");
    		scanf("%s",police);
     
    		            if(p1==0)
    	                {
    			        	system("COLOR 1B");
    						printf("Félicitations! La suite du programme va s'effectuer sur un fond noir et utiliser une police cyan.\n");
    				        system("PAUSE");
    					}
     
    		            if(p2==0)
    	                {
    			        	system("COLOR 1F");
    						printf("Félicitations! La suite du programme va s'effectuer sur un fond noir et utiliser une police blanche.\n");
    				        system("PAUSE");	
    					}
     
    	}
     
    		if(f2==0)
    	{
    		printf("Vous avez choisi un Bleu gris.\n");
    		system("PAUSE");
     
    		printf("Quelle couleur de police voulez-vous utiliser?\n");
    		printf("'C' pour Cyan.\n");
    		printf("'B' pour Blanc.\n");
     	    scanf("%s",police);
     
    		            if(p1==0)
    	                {
    			        	system("COLOR 3B");
    						printf("Félicitations! La suite du programme va s'effectuer sur un fond bleu gris et utiliser une police cyan.\n");
    				        system("PAUSE");
    					}
     
    		            if(p2==0)
    	                {
    			        	system("COLOR 3F");
    						printf("Félicitations! La suite du programme va s'effectuer sur un bleu gris et utiliser une police blanche.\n");
    				        system("PAUSE");
    					}
     
    	}				
     
    		if(f3==0)
    	{
    		printf("Vous avez choisi un Gris clair.\n");
    		system("PAUSE");
    		system("CLS");
     
    		printf("Quelle couleur de police voulez-vous utiliser?\n");
    		printf("'C' pour Cyan.\n");
    		printf("'B' pour Blanc.\n");
     	    scanf("%s",police);
     
    		            if(p1==0)
    	                {
    			        	system("COLOR 7B");
    						printf("Félicitations! La suite du programme va s'effectuer sur un fond gris clair et utiliser une police cyan.\n");
    				        system("PAUSE");
    			            system("CLS");	
    					}
     
    		            if(p2==0)
    	                {
    			        	system("COLOR 7F");
    						printf("Félicitations! La suite du programme va s'effectuer sur un gris clair et utiliser une police blanche.\n");
    				        system("PAUSE");
    			            system("CLS");	
    					}
     
    	}					
     
    	return 0;
    }

  5. #5
    Membre expérimenté Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 623
    Points : 1 554
    Points
    1 554
    Par défaut
    Hello,

    Ligne 11 et 12: les variables fond et police sont juste déclarées, pas initialisées, on peut donc y trouver tout et (surtout) n'importe quoi....
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent

Discussions similaires

  1. [HTML]Image qui ne s'affiche pas sous firefox...
    Par OrangeBud dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/10/2004, 13h42
  2. pages qui ne s'affichent pas
    Par luck dans le forum ASP
    Réponses: 4
    Dernier message: 19/07/2004, 11h35
  3. [Applet] BorderLayout qui ne s'affiche pas
    Par Invité(e) dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 29/04/2004, 11h39
  4. [debutant][Tomcat]Images qui ne s'affichent pas
    Par omega dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/04/2004, 09h44
  5. [MFC] Ces fenêtres qui ne s'affichent pas..
    Par Davide dans le forum MFC
    Réponses: 3
    Dernier message: 19/11/2003, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo