当前位置: 首页 > news >正文

利用strstr与atoi的结合实现一个C语言获取文件中数据的工具

源代码如下:

#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
int get_buf_data(char *buf,char *data)
{
	char *p1 =NULL,* p2=NULL;
	int num =0;
    p1 = buf;
    p2 = strstr(p1,data);
    if(p2 == NULL)
    {
        printf("%s no find  %s --- %s\r\n",__FUNCTION__ ,buf,data);
        return 0;
    }
    p1 = p2+strlen(data);
    num = atoi(p1);
	return num; 
}
int main(void)
{
	int fd = -1 ; 
	char buf[1024];
	fd =  open("build_mtk8127eng.sh",O_RDWR);
	if(-1 == fd)
	{
		printf("open fair!\n");
		return -1 ;
	}
	memset(buf,0,sizeof(buf));
	read(fd,buf,1024);
	close(fd);
	int num = get_buf_data(buf,"student_num:");
	printf("num:%d\n",num);
	return 0 ;
} 
运行结果:1000

对应的文件:

money_num:100
student_num:1000
work:12000
这里主要是要熟悉strstr这个函数,这个是字符串的查找函数,上面这个API就是首先返回查找到对应子串的首地址,然后返回给一个指针接受,后面用另一个指针加上获得刚刚返回子串地址的偏移到达这个子串的首地址,再利用strlen计算这个子串的长度再与首地址相加即得到下一个串,再利用atoi将该串转化为整型。



相关文章:

  • 文字绘制-图片绘制-水印绘制思路
  • C语言 · Anagrams问题
  • C# - 值类型、引用类型走出误区,容易错误的说法
  • 常用网址
  • python 04
  • Python程序-离散和线性图形
  • MongoDB安全事件的一些思考
  • java之多线程的理解
  • json常用方法介绍
  • NSOperation 开发
  • 批量更新MongoDB的列。
  • SOA是什么
  • Apache HttpCore (理解IO基础)
  • 启动eclipse时出现“Failed to load the JNI shared library jvm.dll”错误及解决
  • 软件项目技术点(3)——多画布职责分离
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 10个最佳ES6特性 ES7与ES8的特性
  • 345-反转字符串中的元音字母
  • Apache Pulsar 2.1 重磅发布
  • java8-模拟hadoop
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Laravel5.4 Queues队列学习
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • markdown编辑器简评
  • node和express搭建代理服务器(源码)
  • PHP 7 修改了什么呢 -- 2
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python语法速览与机器学习开发环境搭建
  • react 代码优化(一) ——事件处理
  • XForms - 更强大的Form
  • 阿里云购买磁盘后挂载
  • 驱动程序原理
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 用element的upload组件实现多图片上传和压缩
  • Spring Batch JSON 支持
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​什么是bug?bug的源头在哪里?
  • #pragam once 和 #ifndef 预编译头
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (¥1011)-(一千零一拾一元整)输出
  • (1)常见O(n^2)排序算法解析
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (C++17) optional的使用
  • (补)B+树一些思想
  • (分布式缓存)Redis持久化
  • (力扣)1314.矩阵区域和
  • (一) springboot详细介绍
  • (转)关于pipe()的详细解析
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET NPOI导出Excel详解
  • .NET Remoting学习笔记(三)信道
  • .net/c# memcached 获取所有缓存键(keys)
  • .Net的DataSet直接与SQL2005交互