需要關於這個問題的一些建議,因爲我正在苦苦掙扎,無法搞清楚。將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