加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

将Linux C Char数组转换为Int

发布时间:2020-12-14 01:24:45 所属栏目:Linux 来源:网络整理
导读:需要一些关于这个的建议,因为我正在努力实现并无法弄明白. 我有一个文件,在PC上更新,以指示系统运行和运行的时间.我正在写一个非常简单的linux控制台应用程序(最终将成为一个nagios插件).读取此文件并根据文件中的内容进行响应. 我是Linux上编程和使用C的全
需要一些关于这个的建议,因为我正在努力实现并无法弄明白.

我有一个文件,在PC上更新,以指示系统运行和运行的时间.我正在写一个非常简单的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(&ltime);


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

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

}

解决方法

你可以使用atoi

atoi需要一个char *参数并返回一个int.
如果字符串为空,或者第一个字符不是数字或减号,则atoi返回0.如果atoi遇到非数字字符,则返回形成的数字直到该点

int num = atoi(buf);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读