Нужен совет по этому вопросу, так как я боюсь abit и не могу понять это.Convert Linux C Char Array to Int
У меня есть файл, который обновляется на ПК, чтобы указать, что система работает и в какое время она запускается. Я пишу очень простое консольное приложение Linux (в конечном итоге это будет плагин nagios). который читает этот файл и отвечает в зависимости от того, что он нашел в файле.
Я новичок в программировании на Linux и с использованием C, поэтому, пожалуйста, будьте терпеливы, и если вы объясните все ответы, это будет действительно оценено.
В основном я хочу преобразовать массив символов, содержащий 5 символов, в целое число, однако 5-й символ в массиве всегда является буквой. поэтому технически все, что я хочу сделать, - это преобразовать первые 4 символа в массив в целое число ... как? ive попробовал несколько способов без успеха, моя проблема в том, что в настоящее время у меня нет хорошего понимания языка, поэтому у меня нет реальных идей о том, что он может и чего не может сделать.
вот источник моей программы.
в основном массив ЬиЕ будет держать строку, взятую из файла, который будет выглядеть примерно так
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));
}
Чтобы отформатировать код, используйте кнопку «10101» в верхней части окна, в котором вы вводите свой вопрос в –
. Haha я знал, что был простой ответ на вопрос, почему я не смог получить форматированный код. спасибо :) – Kristiaan