Convertir Linux C Char Tableau de Int

besoin de quelques conseils sur ce que im en difficulté abit et ne peut pas le comprendre.

j'ai un fichier qui est mis à jour sur un PC pour indiquer un système a fonctionné et de ce temps, il a couru. je suis en train d'écrire un très simple de la console linux app (sera finalement un plugin nagios). qui lit ce fichier et y répond en fonction de ce qu'il a trouvé dans le fichier.

je suis un débutant total à la programmation sur Linux et à l'aide de C, de sorte s'il vous plaît être patient et si vous voulez expliquer les réponses ce serait vraiment apprécié.

fondamentalement, je veux convertir un char tableau contenant 5 caractères en un entier, cependant la 5ème char dans le tableau est toujours une lettre. donc, techniquement, tout ce que je veux faire est de convertir les 4 premiers caractères du tableau pour un d'entier... comment?? j'ai essayé de plusieurs façons, sans succès, mon problème est que actuellement je n'ai pas une bonne maîtrise de la langue n'ont donc pas de réelles idées sur ce qu'il peut faire et ne pas faire.

ici est la source de mon programme.

fondamentalement le tableau buf sera la tenue d'une chaîne prises à partir du fichier qui va ressembler à quelque chose comme ceci

3455Y (le nombre sera aléatoire, mais toujours 4 caractères).

Désolé pour la mauvaise mise en forme du code, mais je ne peux pas obtenir cette fenêtre stupide pour l'amour ni l'argent pour formater correctement....

include <fcntl.h>
include <unistd.h>
include <stdio.h>
include <stdlib.h>
include <time.h>
include <string.h>

define COPYMODE 0644

int main(int argc, char *argv[])  
{
  int  i, nRead, fd;
  int  source;
  int  STATE_OK = 0;
  int  STATE_WARNING  = 1;
  int  STATE_CRITICAL = 2;
  int  STATE_UNKNOWN  = 3;
  int  system_paused  = 0; 

  char buf[5]; 
  int  testnumber;

  if((fd = open(argv[1], O_RDONLY)) == -1)
    {
      printf("failed open : %s", argv[1]);
      return STATE_UNKNOWN;
    }
      else
    {
      nRead = read(fd, buf, 5);
    }

  close(source);

  if (buf[4] == 'P')
    {
      printf("Software Paused");
      return STATE_WARNING;
    }
      else
    {
      return STATE_OK;
    }
    time_t ltime; /* calendar time */  
    struct tm *Tm;
    ltime=time(NULL); /* get current cal time */  
    Tm=localtime(&ltime);


    int test;
    test = Tm->tm_hour + Tm->tm_min;
    printf("%d", test);

    printf("%d", strtoi(buf));

}
Pour formater le code, utilisez la "10101" bouton en haut de la fenêtre que vous tapez votre question en
haha je savais que c'était une simple réponse à pourquoi je ne pouvais pas obtenir le code formaté. merci 🙂

OriginalL'auteur Kristiaan | 2010-01-22