需要关于这个问题的一些建议,因为我正在苦苦挣扎,无法搞清楚。将Linux C Char阵列转换为Int
我有一个文件,在个人电脑上得到更新,表明系统运行和它运行的时间。我正在编写一个非常简单的Linux控制台应用程序(最终将成为一个nagios插件)。读取此文件并根据文件中找到的内容做出响应。
我是一个在Linux上编程和使用C的总新手,所以请耐心等待,如果你想解释任何答案,真的很感激。
基本上我想将一个包含5个字符的char数组转换为一个整数,但是数组中的第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));
}
要格式化代码,请使用窗口顶部的“10101”按钮在 – 2010-01-22 17:26:57
中输入您的问题哈哈我知道有一个简单的答案,为什么我无法获得代码格式。谢谢:) – Kristiaan 2010-01-25 09:24:25