Shutdown avec une variable en C

Bonjour,
je debut en langage C et j'ai essayer de cree un petit programme avec la console ou l'on indique le temp que l'on veut et l'ordinateur s'arette:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
long shut = 0;

printf("eteindre dans=");
scanf("%ld", &shut);
system(" shutdown -s -t %ld", shut);
return 0;
}

mais ca ne fonctione pas la commande system n'est pas compatible avec les variables?
si quelqu'un pourait m'aider ...
Configuration: Windows XP
Firefox 2.0.0.2

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    montre le résultat du printf !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    et si tu supprimes l'appel à system, il ne va rien se passer !!!
    1. pour la ligne 10 ----) sscanf(cmd, "shutdown -s -t %ld", shut); j'ai format argument is not a pointerpour le prints il n'affiche rien des signes bizzars des caracters speciaux d ugenre pettit 1 carrres }
    2. pour la ligne 10 ----) sscanf(cmd, "shutdown -s -t %ld", shut); j'ai format argument is not a pointerpour le prints il n'affiche rien des signes bizzars des caracters speciaux d ugenre pettit 1 carrres }
  2. Contributeur
    hello
    system ne comprend pas les % d'un format, il lui faut une chaine de caractères

    char cmd[128];

    sscanf(cmd, " shutdown -s -t %ld", shut);
    system(cmd);
    1. j'ai essayer ce que tu ma dit mais sa ne semble pas fonctionner dit moi si j'ai mal inseré
      (sscanf(cmd, " shutdown -s -t %ld", shut); j'ai enlever un s)

      ca donne sa

      #include <stdio.h>
      #include <stdlib.h>

      int main(int argc, char *argv[])
      {
      long shut = 0;

      printf("eteindre dans=");
      scanf("%ld", &shut);
      char cmd[128];
      scanf(cmd, "shutdown -s -t %ld", shut);
      system(cmd);
      return 0;
      }

      merci
  3. Contributeur
    il faut 2s
    sscanf(cmd, "shutdown -s -t %ld", shut);
    1. ok je vait essayer je te redit demain si sa a marché
    2. @sethje comprend pas sa marche toujour pas..

      #include <stdio.h>
      #include <stdlib.h>

      int main(int argc, char *argv[])
      {
      long shut = 0;

      printf("eteindre dans=");
      scanf("%ld", &shut);
      char cmd[128];
      sscanf(cmd, "shutdown -s -t %ld", shut);
      system(cmd);
      return 0;
      }
  4. Contributeur
    déplacer char cmd[128]; après long shut=0
    mettre un printf("%s\n", cmd); après le sscanf
    1. desoler je comprend pas je remplace system(cmd); par printf("%ld\n", cmd);?

      #include <stdio.h>
      #include <stdlib.h>

      int main(int argc, char *argv[])
      {
      long shut = 0;
      char cmd[128];
      printf("eteindre dans=");
      scanf("%ld", &shut);
      sscanf(cmd, "shutdown -s -t %ld", shut);
      printf("%ld\n", cmd);
      return 0;
      }
    2. Contributeur
      @sethnon, %s pour voir le contenu de cmd
    3. @dubcekca me met (j'utilise code blocks) syntax error befor return ca na aucuns sens ...
      printf("%s\n", cmd) -) pourquoi voirs cmd?

      #include <stdio.h>
      #include <stdlib.h>

      int main(int argc, char *argv[])
      {
      long shut = 0;
      char cmd[128];
      printf("eteindre dans=");
      scanf("%ld", &shut);
      sscanf(cmd, "shutdown -s -t %ld", shut);
      printf("%s\n", cmd)
      return 0;
      }
      merci deme repondre depuis le debut je debute et un debutant ca doit etre chiant
    4. Modérateur
      @sethT'as oublié un point-virgule au dernier printf.
  5. Contributeur
    Salut,
    Normal, ce n'est pas sscanf qu'il faut utiliser mais sprintf !
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
    long shut = 0;
    
    printf("eteindre dans=");
    scanf("%ld", &shut);
    char cmd[128];
    sprintf(cmd, "shutdown -s -t %ld", shut);
    system(cmd);
    return 0;
    }
    
    1. sa semble mieu fonctionner mais il y a un probleme avec le shutdown la consol affiche le shudown help
      le scan n'est pas pris en compte?