Electronique : pat_man_34, 1 utilisateur anonyme et 10 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Probleme commande système

n°6950
k4rt3x
Davantage d'avantages avantage
Posté le 30-08-2006 à 21:51:47  profilanswer
 

Salut,

 

J''ai un petit probleme, je suis en train de creer un programme
en console qui a pour but de formater le Disque dur, la clé usb, ou la disquette
qu'on lui de demande de formater avec un menu.

 

j'ai creer une fonction "hdd" qui formate le disque dur qu'on lui demande de formater :

Seulement la commande system()
ne marche pas car il prend \\\\\"hdd\\\\\" pour un deuxieme argument            :(          

 

Alors je voudrait savoir comment faire pour que la commande system

 


formate la lettre rentrée dans hdd

  

 

Merci pour vos reponses.

 


EDIT: Je n'arrive pas a mettre le code de la fonction dans le sujet il rajoute plein de \\\\ partout !

 

le code est ici : www.kokoom.com/rektetex/code.txt

 

EDIT2 : Pour le formatage de disquette, il n'y a pas besoin de stocker une lettre dans une variable donc
j'ai fait

 


system(\\\"FORMAT A:\\\" )(les deux slash n'y sont pas, je ne sais pas pourquoi ça les rajoutes quand je post.)

 

mais le fomatage est très long     :sleep:    
Je me demandais comment faire un formatage rapide (comme quand on le fait avec windows où il faut juste cocher la case formatage rapide)

 

merci.

 

       

 




Message édité par k4rt3x le 30-08-2006 à 22:35:06
mood
Google
Posté le 30-08-2006 à 21:51:47  profilanswer
 

n°6951
Deadog
Dain Bramaged
Posté le 31-08-2006 à 00:24:36  profilanswer
 

Code :
  1. char hdd ;
  2. ...
  3. scanf ("%s", &hdd);
  4. ...
  5. system("FORMAT %s: ", hdd);


 
ohlala [:deadog:2]  
 

Code :
  1. char hdd ;
  2. ...
  3. scanf ("%c", &hdd);
  4. ...
  5. system("FORMAT %c: ", hdd);

n°6952
k4rt3x
Davantage d'avantages avantage
Posté le 31-08-2006 à 00:28:23  profilanswer
 

Merci de ta reponse, mais le probelme est toujours le meme:
à la compilation : "too many argument in fonction system"
 

n°6953
Deadog
Dain Bramaged
Posté le 31-08-2006 à 00:34:19  profilanswer
 

ah oui, javais même pas capté  :sarcastic:  
enfin, tu l'aurais dit plus tôt l'erreur :
 

Code :
  1. char buf[11];
  2. sprintf(buf, "FORMAT %c: ", hdd);
  3. system(buf);


Message édité par Deadog le 31-08-2006 à 01:21:29
n°6954
k4rt3x
Davantage d'avantages avantage
Posté le 31-08-2006 à 00:46:15  profilanswer
 

Code :
  1. int hdd()
  2. {
  3.     int choix;
  4.     char hdd ;
  5.     system("cls" );
  6.     char buf[11];
  7.   printf ("\n\n\t\t\tFORMATER UN DISQUE DUR" );
  8. printf ("\n\n\n\nVeuillez entrer entrer la lettre du disque a formater:   " );
  9. scanf ("%c", &hdd);
  10. sprintf(buf, "FORMAT %c: ", hdd);
  11. printf ("\nEntrez 1 pour commencer le formatage ou 0 pour quitter.  " );
  12. scanf ("%d", &choix);
  13. switch (choix)
  14. {
  15.     case 1:
  16.     printf ("Debut du formatage:   " );
  17.     break;
  18.     default:
  19.     exit(0);
  20. }
  21. system(buf);
  22. system("exit" );
  23. }


Maintenant, le

Code :
  1. scanf ("%c", &hdd);

ne se fait plus ... Il passe directement à 'Entrez 1 pour commencer le formatage ou 0 pour quitter.'
  :??:


Message édité par k4rt3x le 31-08-2006 à 00:49:39
n°6955
k4rt3x
Davantage d'avantages avantage
Posté le 31-08-2006 à 00:59:25  profilanswer
 

Comme ça, ça marche:

 
Code :
  1. int choix;
  2.     char hdd;
  3.     system("cls" );
  4.     char buf[11];
  5.   printf ("\n\n\t\t\tFORMATER UN DISQUE DUR" );
  6. printf ("\n\n\n\nVeuillez entrer entrer la lettre du disque a formater:   " );
  7. scanf ("%s", &hdd);
  8. printf("%c",hdd);

( en faisant scanf avec %s, et printf avec %c ça marche ... :pt1cable:

 

n°6956
Deadog
Dain Bramaged
Posté le 31-08-2006 à 01:05:15  profilanswer
 

les joies du scanf ... surtout quand celui la n'a pas les même comportements suivant l'OS, car chez moi (linux) il se fait ...
 
à dire vrai j'ai toujours banni le scanf pour ce genre de truc, je suis toujours passé par des solutions un poil plus compliqué mais au moins j'suis sur que ça marche.


Message édité par Deadog le 31-08-2006 à 01:22:05
n°6957
Deadog
Dain Bramaged
Posté le 31-08-2006 à 01:08:00  profilanswer
 

k4rt3x a écrit :

Comme ça, ça marche:
 

Code :
  1. int choix;
  2.     char hdd;
  3.     system("cls" );
  4.     char buf[11];
  5.   printf ("\n\n\t\t\tFORMATER UN DISQUE DUR" );
  6. printf ("\n\n\n\nVeuillez entrer entrer la lettre du disque a formater:   " );
  7. scanf ("%s", &hdd);
  8. printf("%c",hdd);

( en faisant scanf avec %s, et printf avec %c ça marche ... :pt1cable:


 
 
oui mais non, ça ça n'a pas de sens
tu lui dit de lire une chaîne pour écrire dans un octet, écrit plein plein de truc après et tu veras qu'il va planter aléatoirement car il aura écrit plus loin que l'octet alloué (c'est un dépassement de mémoire, buffer overflow, tu sais, le truc qui donne 70% des failles de sécurité dans les programmes [:dawa])
 
 
edit : même en écrivant qu'un seul caractère il dépasse quand même car il cherche aussi à écrire le 0 de fin de chaîne, voir le \n


Message édité par Deadog le 31-08-2006 à 01:09:37
n°6958
k4rt3x
Davantage d'avantages avantage
Posté le 31-08-2006 à 01:08:41  profilanswer
 

Ah ok,  Quelles "solutions un poil plus compliqué" je pourrai utiliser ici ?  :)

n°6959
k4rt3x
Davantage d'avantages avantage
Posté le 31-08-2006 à 01:11:03  profilanswer
 

Arf, on a post en meme temps, j'ai essayer d'ecrire une phrase au lieu d'une lettre, il n'a pas planter pourtant ???

 


EDIT: Le programme est ici : www.kokoom.com/rektetex/format.exe
EDIT2: Quand je dis il n'a pas planter, c'est qu'il ne s'est pas fermer de lui-meme en affichant un message d'erreur quoi,
          effectivement ça ma renvoyer direct au menu on peut appeler ça un plantage ?


Message édité par k4rt3x le 31-08-2006 à 01:13:34
n°6960
k4rt3x
Davantage d'avantages avantage
Posté le 31-08-2006 à 01:15:58  profilanswer
 

Ah, ca ne marche pas !
Enfet

Code :
    • int choix;
    • [*]    char hdd;
    • [*]
    • [*]    system("cls" );
    • [*]    char buf[11];
    • [*]
    • [*]  printf ("\n\n\t\t\tFORMATER UN DISQUE DUR" );
    • [*]
    • [*]printf ("\n\n\n\nVeuillez entrer entrer la lettre du disque a formater:   " );
    • [*]scanf ("%s", &hdd);
    • [*]
    • [*]printf("%c",hdd);

la ça marche mais

Code :
  1. int choix;
  2.     char hdd;
  3.     system("cls" );
  4.     char buf[11];
  5.   printf ("\n\n\t\t\tFORMATER UN DISQUE DUR" );
  6. printf ("\n\n\n\nVeuillez entrer entrer la lettre du disque a formater:   " );
  7. scanf ("%s", &hdd);
  8. sprintf(buf, "FORMAT %c: ", hdd);
  9. printf ("\nEntrez 1 pour commencer le formatage ou 0 pour quitter.  " );
  10. scanf ("%d", &choix);

la ca marche plus


Message édité par k4rt3x le 31-08-2006 à 01:16:13
n°6961
Deadog
Dain Bramaged
Posté le 31-08-2006 à 01:16:51  profilanswer
 

je t'ai dit, c'est aléatoire.
si tu prend l'habitude d'utiliser scanf comme ça tu va au devant de gros bugs chelou plus tard :D
je sais que y'a une "bonne" méthode d'utiliser scanf mais j'me suis jamais atardé dessus car la plus part du temps on préfère utiliser ce genre de truc :
 

Code :
  1. char buffer[BUFSIZ];
  2. char hdd;
  3. fgets (buffer, BUFSIZ, stdin);
  4. hdd = buffer[0];


 
BUFSIZ est normallement déjà défini dans stdio.h (il vaut 4096 la plus part du temps)
tu peux le réduire si tu veux, mais pas moins de 3 pour que tout aille bien ;)


Message édité par Deadog le 31-08-2006 à 01:23:31
n°6962
k4rt3x
Davantage d'avantages avantage
Posté le 31-08-2006 à 01:39:10  profilanswer
 

Meme avec

Code :
    • char buffer[BUFSIZ];
    • [*]    char hdd;
    • [*]
    • [*]    fgets (buffer, BUFSIZ, stdin);
    • [*]    hdd = buffer[0];

Ca saute le scanf,

 
Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main ()
  4. {
  5. int hdd();
  6. int disk();
  7. int usb();
  8. int menu();
  9.     int choixMenu = 0;
  10. printf ("\n\n\t\t\tFORMATAGE" );
  11. printf ("\n\n\n\n\t Menu:\n\n" );
  12. choixMenu = menu(&choixMenu);
  13.     switch (choixMenu)
  14.     {
  15.         case 1:
  16.         hdd();
  17. /*      case 2:
  18.         disk();
  19.         case 3:
  20.         usb();
  21.         case 4:
  22.         exit(0);    */
  23.         default:
  24.         system("cls" );
  25.         printf ("\nChoix incorrect, tappez un nombre du menu:\n\n" );
  26.         choixMenu = menu();
  27.     }
  28. return 0;
  29. }
  30. int menu(int *ptrChoixMenu)
  31. {
  32.     int choixMenu;
  33. printf ("1. Formater un disque dur\n" );
  34. /*
  35. printf ("2. Formater une disquette\n" );
  36. printf ("3. Formater une cle usb ou lecteur MP3\n" );
  37. printf ("4. Quitter le programme\n\n" );
  38. printf ("Quel est votre choix ?\n" );
  39. */
  40. scanf ("%ld", &choixMenu);
  41. *ptrChoixMenu = choixMenu;
  42. }
  43. int hdd()
  44. {
  45.     int choix;
  46.     char buffer[BUFSIZ];
  47.     char hdd;
  48.     char buf[11];
  49. system("cls" );
  50.                 printf ("\n\n\t\t\tFORMATER UN DISQUE DUR" );
  51. printf ("\n\n\n\nVeuillez entrer entrer la lettre du disque a formater:   " );
  52. fgets (buffer, BUFSIZ, stdin);
  53. hdd = buffer[0];
  54. sprintf(buf, "FORMAT %c: ", hdd);
  55. printf ("\nEntrez 1 pour commencer le formatage ou 0 pour quitter.  " );
  56. scanf ("%d", &choix);
  57. switch (choix)
  58. {
  59.     case 1:
  60.     printf ("Debut du formatage:   " );
  61.     break;
  62.     default:
  63.     exit(0);
  64. }
  65. system(buf);
  66. }
  67. int disk()
  68. {
  69.     int choix;
  70.     system("cls" );
  71.   printf ("\n\n\t\t\tFORMATER UNE DISQUETTE" );
  72. printf ("\n\n\n\nEntrez 1 pour commencer le formatage ou 0 pour quitter.  " );
  73. scanf ("%d", &choix);
  74. system("cls" );
  75. switch (choix)
  76. {
  77.     case 1:
  78.     printf ("Debut du formatage:   " );
  79.     break;
  80.     default:
  81.     exit(0);
  82. }
  83. system("FORMAT A:" );
  84. return 0;
  85. }
  86. int usb()
  87. {
  88.     int choix;
  89.     char hdd ;
  90.     system("cls" );
  91.     char buf[11];
  92.     char buffer[BUFSIZ];
  93.                             printf ("\n\n\t\t\tFORMATER UN MP3 OU CLE USB" );
  94. printf ("\n\n\n\nVeuillez entrer entrer la lettre du volume \n(Allez dans poste de travail si vous ne connaissez pas la lettre:   " );
  95. fgets (buffer, BUFSIZ, stdin);
  96. hdd = buffer[0];
  97. sprintf(buf, "FORMAT %c: ", hdd);
  98. printf ("\nEntrez 1 pour commencer le formatage ou 0 pour quitter.  " );
  99. scanf ("%d", &choix);
  100. switch (choix)
  101. {
  102.     case 1:
  103.     printf ("Debut du formatage:   " );
  104.     break;
  105.     default:
  106.     exit(0);
  107. }
  108. system(buf);
  109. }


voila le code source entier du programme peut etre que je doit avoir fait des erreurs quelque part   :pfff:  

 

En tous cas, merci pour ton aide et désoler pour la longueur du post


Message édité par k4rt3x le 31-08-2006 à 01:39:39
n°6963
Deadog
Dain Bramaged
Posté le 31-08-2006 à 01:55:46  profilanswer
 

il doit avoir du reste dans le stdin à cause du précédent scanf (c'est entre autre pour cela que j'aime pas scanf :D)
 
attend voir ...

n°6964
k4rt3x
Davantage d'avantages avantage
Posté le 31-08-2006 à 01:57:22  profilanswer
 

Euh, une question , C'est quoi le stdin en fait ?

n°6965
Deadog
Dain Bramaged
Posté le 31-08-2006 à 02:04:02  profilanswer
 

le fichier d'entrée standart
tout ce que tu rentre au clavier est mit dans un faux fichier qu'on appel stdin
 

Code :
  1. while(getchar () != 10);
  2. fgets (buffer, BUFSIZ, stdin);


 
pas sur que ça marche sous windows à cause des fins de ligne qui se font en \10\13 au lieu de \10 seulement sous linux.
sinon ça fait :
 

Code :
  1. while(getchar () != 10);
  2. while(getchar () != 13);
  3. fgets (buffer, BUFSIZ, stdin);


Message édité par Deadog le 31-08-2006 à 02:05:30
n°6966
k4rt3x
Davantage d'avantages avantage
Posté le 31-08-2006 à 02:15:50  profilanswer
 

Code :
  1. printf ("\n\n\n\nVeuillez entrer entrer la lettre du disque a formater:   " );
  2.     while(getchar () != 10);
  3.          fgets (buffer, BUFSIZ, stdin);
  4. hdd = buffer[0];
  5. sprintf(buf, "FORMAT %c: ", hdd);
  6. printf ("\nEntrez 1 pour commencer le formatage ou 0 pour quitter.  " );
  7. scanf ("%d", &choix);


La ca marche jusqu'a la ligne 11 où je retourne au menu

 
Code :
    • while(getchar () != 10);
    • [*]    while(getchar () != 13);
    • [*]    fgets (buffer, BUFSIZ, stdin);

Et là bah quand il me demande la lettre du disque je la tape et j'appui sur ENTRé mais ca me refait taper quelquechose  :heink:
(www.kokoom.com/reketetex/format3.exe)

n°6967
Deadog
Dain Bramaged
Posté le 31-08-2006 à 02:22:27  profilanswer
 

c'est quoi que t'appel menu ? lequel ?
(je suis à l'aveugle la, car ça marche chez moi, sous nux, et ton exe je peut pas l'exécuter :D)


Message édité par Deadog le 31-08-2006 à 02:23:40
n°6968
k4rt3x
Davantage d'avantages avantage
Posté le 31-08-2006 à 02:24:45  profilanswer
 

Le menu du depart ou il demande si tu veux formater un disque dur
( normalement une disquette et une cle usb mais je les ai enlever le temps de trouver comment faire marcher pour disque dur)

n°6969
Deadog
Dain Bramaged
Posté le 31-08-2006 à 02:28:46  profilanswer
 

rectification, en fait, je viens de réellement compilé tout ton programme et c'est la merde de tout les côté :D je comprend même pas comment ça peut compiler chez toi ...
 
attend voir que je te commente ton code ;)

n°6970
k4rt3x
Davantage d'avantages avantage
Posté le 31-08-2006 à 02:31:32  profilanswer
 

                                                                                                                :pt1cable:

  

Tu le compile avec quoi toi ?  :bounce:

 

n°6971
Deadog
Dain Bramaged
Posté le 31-08-2006 à 02:33:30  profilanswer
 

avec gcc, et avec les options les plus gore, c'est à dire quasiment aucune vérification, et pourtant, il m'a jeté comme un mal propre en essayant de compiler :D
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main ()
  4. {
  5. // La définition de fonction n'a rien à faire ici
  6. int hdd();
  7. int disk();
  8. int usb();
  9. int menu();
  10.     int choixMenu = 0;
  11. printf ("\n\n\t\t\tFORMATAGE" );
  12. printf ("\n\n\n\n\t Menu:\n\n" );
  13. choixMenu = menu(&choixMenu); // faut choisir, soit tu passe un pointeur en paramètre, soit tu renvoie qqlch, mais pas les deux, surtout quand c'est la même variable !
  14.     switch (choixMenu)
  15.     {
  16.         case 1:
  17.         hdd();
  18.         // Si y'a pas de break ici, sortie de hdd() il va direct exécuter default, ce qui explique pourquoi tu retournais dans le menu
  19. /*      case 2:
  20.         disk();
  21.         case 3:
  22.         usb();
  23.         case 4:
  24.         exit(0);    */
  25.         default:
  26.         system("cls" );
  27.         printf ("\nChoix incorrect, tappez un nombre du menu:\n\n" );
  28.         choixMenu = menu(); // int menu () n'existe pas, c'est int menu (int *) qui existe seulement
  29.     }
  30. return 0;
  31. }
  32. int menu(int *ptrChoixMenu)
  33. {
  34.     int choixMenu;
  35. printf ("1. Formater un disque dur\n" );
  36. /*
  37. printf ("2. Formater une disquette\n" );
  38. printf ("3. Formater une cle usb ou lecteur MP3\n" );
  39. printf ("4. Quitter le programme\n\n" );
  40. printf ("Quel est votre choix ?\n" );
  41. */
  42. scanf ("%ld", &choixMenu); // Pourquoi ld ? d suffirait
  43. *ptrChoixMenu = choixMenu; // tant qu'à faire, autant écrire directement dans ptrChoixMenu
  44. // la fonction est déclaré renvoyant u int mais y'a pas de return ?!
  45. }


 
 
déjà pour le début


Message édité par Deadog le 31-08-2006 à 02:43:38
n°6972
Deadog
Dain Bramaged
Posté le 31-08-2006 à 02:37:38  profilanswer
 

correction à l'aveugle
je t'ai fait 2 fonction menu : une qui marche en pointeur, l'autre avec une valeur de retour
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int hdd();
  4. int disk();
  5. int usb();
  6. int menu();
  7. void menu_ptr (int *);
  8. int main ()
  9. {
  10.     int choixMenu = 0;
  11. printf ("\n\n\t\t\tFORMATAGE" );
  12. printf ("\n\n\n\n\t Menu:\n\n" );
  13. menu_ptr(&choixMenu);
  14.     switch (choixMenu)
  15.     {
  16.         case 1:
  17.         hdd();
  18.         break;
  19. /*      case 2:
  20.         disk();
  21.         case 3:
  22.         usb();
  23.         case 4:
  24.         exit(0);    */
  25.         default:
  26.         system("cls" );
  27.         printf ("\nChoix incorrect, tappez un nombre du menu:\n\n" );
  28.         choixMenu = menu();
  29.     }
  30. return 0;
  31. }
  32. void menu_ptr(int *ptrChoixMenu)
  33. {
  34.     int choixMenu;
  35. printf ("1. Formater un disque dur\n" );
  36. /*
  37. printf ("2. Formater une disquette\n" );
  38. printf ("3. Formater une cle usb ou lecteur MP3\n" );
  39. printf ("4. Quitter le programme\n\n" );
  40. printf ("Quel est votre choix ?\n" );
  41. */
  42. scanf ("%d", ptrChoixMenu);
  43. }
  44. int menu()
  45. {
  46.     int choixMenu;
  47. printf ("1. Formater un disque dur\n" );
  48. /*
  49. printf ("2. Formater une disquette\n" );
  50. printf ("3. Formater une cle usb ou lecteur MP3\n" );
  51. printf ("4. Quitter le programme\n\n" );
  52. printf ("Quel est votre choix ?\n" );
  53. */
  54. scanf ("%d", &choixMenu);
  55. return choixMenu;
  56. }


Message édité par Deadog le 31-08-2006 à 02:43:52
n°6973
k4rt3x
Davantage d'avantages avantage
Posté le 31-08-2006 à 02:38:58  profilanswer
 

Merci beaucoup, par contre je vais aller me coucher je verrai tous ça demain, merci @+

n°6974
k4rt3x
Davantage d'avantages avantage
Posté le 31-08-2006 à 11:34:09  profilanswer
 

Voila, j'ai refait le programme en utilisant uniquement le menu qui marche avec pointeur
mais :

 
Code :
  1. int hdd()
  2. {
  3.     int choix;
  4.     char buffer[BUFSIZ];
  5.     char hdd;
  6.     char buf[11];
  7. system("cls" );
  8.                 printf ("\n\n\t\t\tFORMATER UN DISQUE DUR" );
  9. printf ("\n\n\n\nVeuillez entrer entrer la lettre du disque a formater:   " );
  10. fgets (buffer, BUFSIZ, stdin);
  11. hdd = buffer[0];
  12. sprintf(buf, "FORMAT %c: ", hdd);
  13. printf ("\nEntrez 1 pour commencer le formatage ou 0 pour quitter.  " );
  14. switch (choix)
  15. {
  16.     case 1:
  17.     printf ("Debut du formatage:   " );
  18.     break;
  19.     default:
  20.     exit(0);
  21. }
  22. system(buf)


Là ca ne marche toujours pas, ça passe directement à 'Entrez 1 pour commencer le formatage ou 0 pour quitter.'

 

sans attendre que l'on ait taper une lettre. :pfff:

 

J'ai essayer ça:

Code :
  1. int hdd()
  2. {
  3.     int choix;
  4.     char buffer[BUFSIZ];
  5.     char hdd;
  6.     char buf[11];//11 normalement
  7. system("cls" );
  8.                 printf ("\n\n\t\t\tFORMATER UN DISQUE DUR" );
  9. printf ("\n\n\n\nVeuillez entrer entrer la lettre du disque a formater:" );
  10. scanf ("%s", &hdd);
  11. sprintf(buf, "FORMAT %c: ", hdd);
  12. printf ("\nLe formatage va commencer ...\n\n" );
  13. system(buf);
  14. }


Et ca marche donc je pense que je vais tout laisser comme ça. :)

 


n°6975
Mossieur P​ropre
Posté le 31-08-2006 à 11:49:48  profilanswer
 

le scanf, c'est vraiment de la merde .... banni de mon lexique C :D


---------------
Forever Yoko in my heart. | http://www.phoenixfr.org - réseau IRC francophone | knexos xstephx a dit : "blabla"
n°6976
Deadog
Dain Bramaged
Posté le 31-08-2006 à 15:57:30  profilanswer
 

k4rt3x a écrit :

Voila, j'ai refait le programme en utilisant uniquement le menu qui marche avec pointeur
mais :
 

Code :
  1. int hdd()
  2. {
  3.     int choix;
  4.     char buffer[BUFSIZ];
  5.     char hdd;
  6.     char buf[11];
  7. system("cls" );
  8.                 printf ("\n\n\t\t\tFORMATER UN DISQUE DUR" );
  9. printf ("\n\n\n\nVeuillez entrer entrer la lettre du disque a formater:   " );
  10. fgets (buffer, BUFSIZ, stdin);
  11. hdd = buffer[0];
  12. sprintf(buf, "FORMAT %c: ", hdd);
  13. printf ("\nEntrez 1 pour commencer le formatage ou 0 pour quitter.  " );
  14. switch (choix)
  15. {
  16.     case 1:
  17.     printf ("Debut du formatage:   " );
  18.     break;
  19.     default:
  20.     exit(0);
  21. }
  22. system(buf)


Là ca ne marche toujours pas, ça passe directement à 'Entrez 1 pour commencer le formatage ou 0 pour quitter.'
 
sans attendre que l'on ait taper une lettre. :pfff:  
 
J'ai essayer ça:

Code :
  1. int hdd()
  2. {
  3.     int choix;
  4.     char buffer[BUFSIZ];
  5.     char hdd;
  6.     char buf[11];//11 normalement
  7. system("cls" );
  8.                 printf ("\n\n\t\t\tFORMATER UN DISQUE DUR" );
  9. printf ("\n\n\n\nVeuillez entrer entrer la lettre du disque a formater:" );
  10. scanf ("%s", &hdd);
  11. sprintf(buf, "FORMAT %c: ", hdd);
  12. printf ("\nLe formatage va commencer ...\n\n" );
  13. system(buf);
  14. }


Et ca marche donc je pense que je vais tout laisser comme ça. :)


 
bah oui, t'as pas remit le while ;)
 
si tu laisse un scanf("%s", ...) sur un char c'est vraimant imonde ;)

n°6977
CryoGen
Powered by kitkat©
Posté le 01-09-2006 à 16:56:16  profilanswer
 

on peut flush() le stdin aussi non ? ca fait longtemps que j'ai plus fait de C qui gere une entrée clavier ^^


---------------
I am the bone of my sword...
n°6978
Deadog
Dain Bramaged
Posté le 01-09-2006 à 17:03:27  profilanswer
 

CryoGen a écrit :

on peut flush() le stdin aussi non ? ca fait longtemps que j'ai plus fait de C qui gere une entrée clavier ^^


 
 
non non et non :o pas de fflush du stdin :fou: c'est pire que tout :o

n°6979
CryoGen
Powered by kitkat©
Posté le 01-09-2006 à 18:37:13  profilanswer
 

ok j'ai rien dit :D
 
 
--> [EXIT]


---------------
I am the bone of my sword...
n°7025
cybersplas​h
Laissez moi chanter !!!
Posté le 18-09-2006 à 15:33:26  profilanswer
 

au risque de dire une connerie pourquoi ne pas utiliser le getchar() ?
en plus ça evite le buffer overflow car on ne récupère qu'un caractère
 
hdd=getchar();
if(tmp=getchar()!=\n) {/*Gestion de l'erreur*/}
else {/* controle de la validité du caractère */}
 
voila le petit bout de code pour faire comme un scanf  
 
(si je me trompe soyez indulgent mon c se fait vieux :) )

mood
Google
Posté le 18-09-2006 à 15:33:26  profilanswer
 


Aller à :
Ajouter une réponse
 

Hit Parade