нужен какой-то совет по этому вопросу, так как я борюсь с abit и не могу понять это.
У меня есть файл, который обновляется на ПК, чтобы указать, какая система запускалась и в какое время она запускалась.я пишу очень простое консольное приложение для Linux (в конечном итоге это будет плагин nagios).который читает этот файл и отвечает в зависимости от того, что он нашел в этом файле.
Я - новичок в программировании на Linux и использовании C, поэтому, пожалуйста, будьте терпеливы, и если вы объясните какие-либо ответы, это будет действительно признательно.
в основном я хочу преобразовать массив символов, содержащий 5 символов, в целое число, однако 5-й символ в массиве всегда является буквой.так что технически все, что я хочу сделать, это преобразовать первые 4 символа в массиве в целое число ... как ??Я пробовал несколько способов, но безуспешно, моя проблема в том, что в настоящее время я плохо разбираюсь в языке, поэтому не имею реального представления о том, что он может и не может делать.
Вот источник моей программы.
в основном массив buf будет содержать строку, взятую из файла, которая будет выглядеть примерно так
3455Y (число будет случайным, но всегда длиной 4 символа).
Извините за плохое форматирование кода, но я не могу получить это глупое окно для любви или денег, чтобы правильно его отформатировать ....
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(<ime);
int test;
test = Tm->tm_hour + Tm->tm_min;
printf("%d", test);
printf("%d", strtoi(buf));
}