Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme variable pour ouvrir un programme

%s:\\Restauration\\Prog_restauration\\driveraffichage.exe

    10 octobre 2006 à 18:11:57

    Bonjours a tous,

    J'ai un probleme très curieux regarder :

    voici mon code pour ouvrir un programme qui va par la suite installer des drivers :

    printf("   Veulliez Specifier la lettre du Lecteur, puis pressez ENTER : ");

        char lecteur[300];
        scanf("%s", lecteur);
           
    sleep(2000);
    printf("\n\n      Installation de    :        Pilotes d'affichage\n\n     ");
    sprintf (lecteur,"%s:\\Restauration\\Prog_restauration\\driveraffichage.exe", lecteur);
    system  (lecteur);
    system("PAUSE");


    je pensse que le probleme vient de ma variables car :

    Citation : Avec la variable, il me dit que le chemin n'est pas bon

    %s:\\Restauration\\Prog_restauration\\driveraffichage.exe



    Citation : SANS la variable le programme souvre

    F:\\Restauration\\Prog_restauration\\driveraffichage.exe




    Merci beaucoup de votre aide, car la sa m'etonne lol
    • Partager sur Facebook
    • Partager sur Twitter
      10 octobre 2006 à 18:17:34

      Attention les balises utilisées sont celle du PHP...

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        10 octobre 2006 à 18:18:21

        Essaies de faire deux variables différentes : une pour la lettre et une pour le chemin complet. Essaies aussi d'utiliser la fonction fgets() a la place de scanf();
        • Partager sur Facebook
        • Partager sur Twitter
          10 octobre 2006 à 18:22:40

          Citation : GuilOooo

          Essaies de faire deux variables différentes : une pour la lettre et une pour le chemin complet. Essaies aussi d'utiliser la fonction fgets() a la place de scanf();


          fgets() pour une lettre, il y a mieux.
          • Partager sur Facebook
          • Partager sur Twitter
            10 octobre 2006 à 18:27:41

            enfete sa marche sauf que la variable ne vaut pas F par exemple mais vo le chmein entier

            C'est genant car dans la suite de mon code il utilise la variable enter par l'utilisateur pour executer un programme

            voici mon code entier pourrez vous me l'optimiser please car j'ai un peut de mal a comprendre et sa me permettra d'avancer.

            piloteslogitiels: // debut installation pilotes
                             
              printf("%s\n", baniere1);
              printf("%s\n", baniere2);
              printf("%s\n", baniere3);
              printf("%s\n", baniere4);
              printf("%s\n", baniere5);
            {               
            printf("                          !!! ATTENTION !!!\n            ");
            printf("\n");
            printf("                    Installation des logitiels\n\n            ");
            printf("   Veulliez Specifier la lettre du Lecteur, puis pressez ENTER : ");

                char lecteur[300];
                scanf("%s", lecteur);
                   
            sleep(2000);
            printf("\n\n      Installation de    :        Pilotes d'affichage\n\n     ");
            sprintf (lecteur,"%s:\\Restauration\\Prog_restauration\\driveraffichage.exe", lecteur);
            system  (lecteur);
            system("PAUSE");
            system("cls");
             
                                        // Bilan : Probleme de variables, la variable lecteur est egal au chemin entier du driveraffichage.



              printf("%s\n", baniere1);
              printf("%s\n", baniere2);
              printf("%s\n", baniere3);
              printf("%s\n", baniere4);
              printf("%s\n", baniere5);
             

            printf("\n\n      Installation de    :        Pilotes Son\n\n     ");
            printf("%s \n\n", lecteur);
            printf("\n");
            printf (lecteur,"%s:\\Restauration\\Prog_restauration\\piloteaudio.exe", lecteur);
            system  (lecteur);
            system("PAUSE");
            system("cls");





            }  // fin installation pilotes



            Escuser de l'avoir mi en php c'est l'habitude

            Merci beaucoup

            • Partager sur Facebook
            • Partager sur Twitter
              10 octobre 2006 à 18:35:43

              1. Jamais de goto.
              2. sleep() pas définie sur Windows donc comportement indéfini (utilise Sleep dans windows.h).
              3. system() pas portable (et surtout, en l'utilisant, tu appelles des fonctions système déjà faites, donc pour un débutant, ça n'a aucune utilité (la philosophie du C, c'est de savoir ce que l'on fait non ?)).
              4. Utilise un tableau pour tes variables baniereX.
              5. Mauvaise utilisation de scanf(), deux tutos à ce sujet.

              EDIT: 6. Pas valide à la norme C89/90, il faut déclarer des variables en début de bloc. ;)
              • Partager sur Facebook
              • Partager sur Twitter
                10 octobre 2006 à 18:41:37

                7. Mauvaise utilisation de printf (Comportement indéfini)
                8. Mauvaise utilisation supposée de sprintf (lecture sur le buffer à écrire => Comportement indéfini)
                • Partager sur Facebook
                • Partager sur Twitter
                  10 octobre 2006 à 22:06:41

                  Merci de me dire toutes mes erreurs mais sa m'aide pas tros, je vai regarder les tutos pour comprendre mais bon un peut d'aide sa serai pas mal

                  Si pourriez me dire comment faire pour résoudre se probleme sa serai super

                  Merci
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 octobre 2006 à 22:27:09

                    Citation : sinops

                    Si pourriez me dire comment faire pour résoudre se probleme sa serai super


                    Bah, il suffit de corriger ton code. On t'a déjà indiqué plein de problèmes...
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Music only !
                      10 octobre 2006 à 22:41:25

                      Question :

                      Citation : Pas de titre

                      1. Jamais de goto.


                      1. Par quoi peut on remplacer goto, parceque sans sa on peut pas faire de menu.

                      Citation : Pas de titre

                      2. sleep() pas définie sur Windows donc comportement indéfini (utilise Sleep dans windows.h).
                      3. system() pas portable (et surtout, en l'utilisant, tu appelles des fonctions système déjà faites, donc pour un débutant, ça n'a aucune utilité (la philosophie du C, c'est de savoir ce que l'on fait non ?)).



                      J'ai pas très bien compris mais bon je vais trouver

                      Citation : Pas de titre

                      4. Utilise un tableau pour tes variables baniereX.


                      Ok je suis en train de lire le cours et je vai rectifier

                      Citation : Pas de titre

                      5. Mauvaise utilisation de scanf(), deux tutos à ce sujet.



                      J'ai lu quelque part qu'il falait sécuriser, je sais pas tros, je vai merenseigner et voir.

                      Citation : Pas de titre

                      6. Pas valide à la norme C89/90, il faut déclarer des variables en début de bloc.



                      Esque tu veut dire par la qu'il faut les mettre en début de code. Ou les entourés de {}

                      Sa serai un peut plus simple si vous me montrer quelque bout de code pour quelque truc que je n'arrive pas a faire. Il faut des exemples concret pour comprendre. Merci


                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 octobre 2006 à 8:25:57

                        Citation : sinops

                        Question :

                        Citation : Pas de titre

                        1. Jamais de goto.


                        1. Par quoi peut on remplacer goto, parceque sans sa on peut pas faire de menu.


                        Le raisonnement par 'sauts' est un concept proche de la machine (l'assembleur fonctionne comme ça, ainsi que les anciens BASIC), mais conduit à code extrêmement difficile à lire et à maintenir. C'est pour ça que le concept de programmation structurée a été inventé. Il est basé sur des structures de code simples qui permettent de résoudre tous les problèmes de flot d'exécution, à savoir :

                        L'exécution conditionelle

                        IF expression
                        ...
                        ENDIF

                        L'alternative

                        IF expression
                        ...
                        ELSE
                        ...
                        ENDIF

                        Le choix multiple

                        SELECT value
                        CASE constant
                        CASE constant
                        <...>
                        ENDSELECT

                        La boucle avec test au début

                        WHILE expression
                        <...>
                        ENDWHILE

                        La boucle avec test en fin

                        REPEAT
                        <...>
                        UNTIL expression

                        La boucle avec compteur

                        FOR count FROM start TO end STEP value
                        <...>
                        NEXT count

                        En C, on utilise bien sûr :
                        if, if-else, switch-case, while, do-while, for.
                        Il n'y a pas besoin de goto, sauf cas exceptionnels et bien documentés (ou 'auto-gérés' en silence avec des macros). En tout cas, jamais en arrière (boucles)

                        Citation : Pas de titre

                        Citation : Pas de titre

                        6. Pas valide à la norme C89/90, il faut déclarer des variables en début de bloc.



                        Esque tu veut dire par la qu'il faut les mettre en début de code.


                        Pas forcément.

                        Citation : Pas de titre

                        Ou les entourés de {}


                        Oui. Le bloc permet la définition (au début de ce bloc) et délimite la portée de la variable.

                        Citation : Pas de titre


                        Sa serai un peut plus simple si vous me montrer quelque bout de code pour quelque truc que je n'arrive pas a faire. Il faut des exemples concret pour comprendre. Merci


                        Ben oui, mais parfois, il n'est pas inutile de refléchir et d'expérimenter soi même, quitte à faire des erreurs. Recopier le code des autres, n'est pas forcément la bonne méthode. Fait de ton mieux, et poste ton code si tu as des problèmes ou des doutes.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Music only !
                          11 octobre 2006 à 12:32:41

                          J'ai apris un bon truc grace a toi. c'est vrai que je n'est pas besoin d'utiliser goto. je m'explique
                          Dans mon menu si tu entre un chiffre il tamene dans la case correspondante, apres dans cette case je fais un goto mais c'est bete je peut directement ecrire mon code dans la case et sa sera largment plus clair

                          Je corrige mon code et je le vous fait voir

                          merci beaucoup


                          Le voici ya tros rien qui a changé mais bon :
                          #include <stdio.h>
                          #include <stdlib.h>

                          int main(int argc, char *argv[])
                          {
                              char versionprog[70]="3.0.0";
                          system("Prog de Resturation V.3.0.0");
                          system("color F9");
                             
                             char baniere1[70]="       ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»";
                             char baniere2[70]="       º             Bienvenue dans le Prog de Resturation         º";
                             char baniere3[70]="       º                    Creer par C.Christopher                º";
                             char baniere4[70]="       º                             V.3.0.0                       º";
                             char baniere5[70]="       ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ";
                             long nombreDeVies = 99; // Au départ, le joueur a 5 vies
                             
                             
                             

                            printf("%s\n", baniere1);
                            printf("%s\n", baniere2);
                            printf("%s\n", baniere3);
                            printf("%s\n", baniere4);
                            printf("%s\n", baniere5);
                           
                           

                           
                            system("cls");
                           
                           
                          long compteur = 0;
                          while (compteur < 100)

                          {
                           
                              printf("%s\n", baniere1);
                              printf("%s\n", baniere2);
                              printf("%s\n", baniere3);
                              printf("%s\n", baniere4);
                              printf("%s\n", baniere5);
                              printf("\n");
                              printf("\n")
                              printf("                                      %ld %%\n", compteur);
                              compteur++;
                              sleep(25);
                              system("cls");
                          }
                           
                           
                           
                           
                           
                          choixmenu:
                          {           
                             char menu0[70]="\n";
                             char menu1[70]="      ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»";
                             char menu2[70]="      º                                                           º";
                             char menu3[70]="      º   A - Pilotes et logitiel            B - MAJRegedit       º";
                             char menu4[70]="      º                                                           º";
                             char menu5[70]="      º   C - Restauration                   D - Copie de         º";
                             char menu6[70]="      º                                              Sauvegarde   º";
                             char menu7[70]="      º   E - Rangement des                  F - Restaurer ou     º";
                             char menu8[70]="      º          Telechargements                  Copier Favoris  º";
                             char menu9[70]="      º                                                           °";
                            char menu10[70]="      º   G - Restauration-Copy                                   º";
                            char menu11[70]="      º          Fichiers                                         º";
                            char menu12[70]="      º                        Q - Quitter                        º";
                            char menu13[70]="      º                                                           º";
                            char menu14[70]="      ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
                           
                           
                            printf("%s\n", menu0);
                            printf("%s\n", menu1);
                            printf("%s\n", menu2);
                            printf("%s\n", menu3);
                            printf("%s\n", menu4);
                            printf("%s\n", menu5);
                            printf("%s\n", menu6);
                            printf("%s\n", menu7);
                            printf("%s\n", menu8);
                            printf("%s\n", menu9);
                            printf("%s\n", menu10);
                            printf("%s\n", menu11);
                            printf("%s\n", menu12);
                            printf("%s\n", menu13);
                            printf("%s\n", menu14);
                           
                           
                            // Demande de choix pour le menu
                           
                              long choixMenu;
                           
                            printf("=== Menu ===\n\n");
                            printf("1. Pilotes et logitiel\n");
                            printf("2. MAJRegedit\n");
                            printf("3. Restauration\n");
                            printf("4. Copie de Sauvegarde\n");
                            printf("5. Rangement des Telechargement\n");
                            printf("6. Restaurer ou copier Favoris\n");
                            printf("7. Restauration-Copy Fichiers\n");
                           
                           
                            printf("\nVotre choix ? ");
                            scanf("%ld", &choixMenu);
                           
                            printf("\n");


                            switch (choixMenu)
                            {
                              case 1:                                                    // debut installation pilotes
                                 printf("Vous avez choisi Pilotes et logitiel.");
                                 sleep(1000);
                                 system("cls");
                                 
                                         
                            printf("%s\n", baniere1);
                            printf("%s\n", baniere2);
                            printf("%s\n", baniere3);
                            printf("%s\n", baniere4);
                            printf("%s\n", baniere5);
                          {               
                          printf("                          !!! ATTENTION !!!\n            ");
                          printf("\n");
                          printf("                    Installation des logitiels\n\n            ");
                          printf("   Veulliez Specifier la lettre du Lecteur, puis pressez ENTER : ");

                              char lecteur[300];
                              scanf("%s", lecteur);
                                 
                          sleep(2000);
                          printf("\n\n      Installation de    :        Pilotes d'affichage\n\n     ");
                          sprintf (lecteur,"%s:\\Restauration\\Prog_restauration\\driveraffichage.exe", lecteur);
                          system  (lecteur);
                          system("PAUSE");
                          system("cls");
                           
                                                      // Bilan : Probleme de variables, la variable lecteur est egal au chemin entier du driveraffichage.



                            printf("%s\n", baniere1);
                            printf("%s\n", baniere2);
                            printf("%s\n", baniere3);
                            printf("%s\n", baniere4);
                            printf("%s\n", baniere5);
                           

                          printf("\n\n      Installation de    :        Pilotes Son\n\n     ");
                          printf("%s \n\n", lecteur);
                          printf("\n");
                          printf (lecteur,"%s:\\Restauration\\Prog_restauration\\piloteaudio.exe", lecteur);
                          system  (lecteur);
                          system("PAUSE");
                          system("cls");





                          }  // fin installation pilotes

                                 system("cls");
                                 break;
                              case 2:
                                 printf("Vous avez choisi MAJRegedit.");      // En construction
                                 sleep(1000);
                                 system("cls");
                                 break;
                              case 3:
                                 printf("Vous avez choisi Restauration.");
                                 sleep(1000);
                                 system("cls");
                                 break;
                              case 4:
                                 printf("Vous avez choisi Copie de Sauvegarde.");
                                 sleep(1000);
                                 system("cls");
                                 break;
                              case 5:
                                 printf("Vous avez choisi Rangement des Telechargement.");
                                 sleep(1000);
                                 system("cls");
                                 break;
                                 case 6:
                                 printf("Vous avez choisi Restaurer ou copier Favoris.");
                                 sleep(1000);
                                 system("cls");
                                 break;
                                 case 7:
                                 printf("Vous avez choisi Restauration-Copy Fichiers.");
                                 sleep(1000);
                                 system("cls");
                                 break;
                              default:
                                 printf("Vous n'avez pas rentre un nombre correct.");
                                 sleep(1000);
                                 system("cls");
                                 goto choixmenu;
                                 break;
                            }
                          }

                            system("PAUSE");     
                            return 0;
                          }


                          Je suis en train de changer les variables en talbeau.
                          Merci pour vos réponses et aides
                          • Partager sur Facebook
                          • Partager sur Twitter
                            11 octobre 2006 à 12:49:03

                            Le goto est vraiment la commande "moche" du C. Utilisez le goto c'est une facilité, et c'est un signe d'une très mausvaise organisation de code.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              11 octobre 2006 à 13:08:19

                              Vous pourvez me dire pourquoi il m'affiche plien de nombre aléatoire :

                                 
                                 long tableau[5], i = 0;

                              tableau[0] = "       ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»";
                              tableau[1] = "       º             Bienvenue dans le Prog de Resturation         º";
                              tableau[2] = "       º                    Creer par C.Christopher                º";
                              tableau[3] = "       º                             V.3.0.0                       º";
                              tableau[4] = "       ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ";


                                for (i = 0 ; i < 5 ; i++)
                                  {
                                      printf("%ld\n", tableau[i]);
                                  }
                                  system("pause");


                              j'ai essayer de remplacer long par char mais sa donne la meme chose

                              Merci beaucoup
                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 octobre 2006 à 13:21:36

                                Citation : sinops

                                Vous pourvez me dire pourquoi il m'affiche plien de nombre aléatoire :

                                   
                                   long tableau[5], i = 0;

                                tableau[0] = "       ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»";
                                tableau[1] = "       º             Bienvenue dans le Prog de Resturation         º";
                                tableau[2] = "       º                    Creer par C.Christopher                º";
                                tableau[3] = "       º                             V.3.0.0                       º";
                                tableau[4] = "       ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ";


                                  for (i = 0 ; i < 5 ; i++)
                                    {
                                        printf("%ld\n", tableau[i]);
                                    }
                                    system("pause");



                                j'ai essayer de remplacer long par char mais sa donne la meme chose

                                Merci beaucoup


                                Le valeurs ne sont pas 'aléatoires', mais ce sont simplement des addresses de chaines que tu affiches en mode entier décimal...

                                Tu veux sans doute un tableau de pointeurs sur char :

                                   char * tableau[5];

                                tableau[0] = "       ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»";
                                tableau[1] = "       º             Bienvenue dans le Prog de Resturation         º";

                                etc. Evidemment, on affiche avec "%s" :

                                  for (i = 0 ; i < 5 ; i++)
                                    {
                                        printf("%s\n", tableau[i]);
                                    }

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Music only !
                                  11 octobre 2006 à 13:50:41

                                  sa marche merci beaucoup, 2 choses d'optimiser c'est deja sa.
                                  Je vais réflechir pour améloirer mon code

                                  Il me reste quand meme un probleme :

                                  {               
                                  printf("                          !!! ATTENTION !!!\n            ");
                                  printf("\n");
                                  printf("                    Installation des logitiels\n\n            ");
                                  printf("   Veulliez Specifier la lettre du Lecteur, puis pressez ENTER : ");

                                      char lecteur[300];
                                      scanf("%s", lecteur);
                                         
                                  sleep(2000);
                                  printf("\n\n      Installation de    :        Pilotes d'affichage\n\n     ");
                                  sprintf (lecteur,"%s:\\Restauration\\Prog_restauration\\driveraffichage.exe", lecteur);
                                  system  (lecteur);
                                  system("PAUSE");
                                  system("cls");
                                   
                                                              // Bilan : Probleme de variables, la variable lecteur est egal au chemin entier du driveraffichage.



                                    printf("%s\n", baniere1);
                                    printf("%s\n", baniere2);
                                    printf("%s\n", baniere3);
                                    printf("%s\n", baniere4);
                                    printf("%s\n", baniere5);
                                   

                                  printf("\n\n      Installation de    :        Pilotes Son\n\n     ");
                                  printf("%s \n\n", lecteur);
                                  printf("\n");
                                  printf (lecteur,"%s:\\Restauration\\Prog_restauration\\piloteaudio.exe", lecteur);
                                  system  (lecteur);
                                  system("PAUSE");
                                  system("cls");





                                  }  // fin installation pilotes


                                  la variable m'affiche lechemin entier

                                  Merci de votre aide
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    12 octobre 2006 à 0:52:40

                                    Citation : sinops



                                    printf (lecteur,"%s:\\Restauration\\Prog_restauration\\piloteaudio.exe", lecteur);



                                    Incohérent. Tu veux sans doute dire :

                                    printf ("%s:\\Restauration\\Prog_restauration\\piloteaudio.exe", lecteur);

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Music only !

                                    probleme variable pour ouvrir un programme

                                    × 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.
                                    • Editeur
                                    • Markdown