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

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

设计一个API: int get_buf_data(char *buf,char *data)

用于获取文件中的数据:

#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 ;
} 

    这个程序的作用就是,open打开对应的文件,通过读取文件中的数据保存到buf中,然后,通过buf找到文件中对应的字符串,读取该字符串后面对应的整形型数据并返回,当然,也可以设计成别的形式。

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

函数原型:

extern char *strstr(char *str1, const char *str2);

   str1: 被查找目标 string expression to search.

   str2: 要查找对象 The string expression to find.

   返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。

目录
相关文章
|
29天前
|
存储 自然语言处理 程序员
【C语言】文件的编译链接和预处理
【C语言】文件的编译链接和预处理
|
19天前
|
算法 NoSQL IDE
C语言性能优化:代码优化技巧与工具。
C语言性能优化:代码优化技巧与工具。
40 0
|
23天前
|
存储 编译器 C语言
【C语言篇】数据在内存中的存储(超详细)
浮点数就采⽤下⾯的规则表⽰,即指数E的真实值加上127(或1023),再将有效数字M去掉整数部分的1。
|
2天前
|
C语言
C语言程序设计核心详解 第二章:数据与数据类型 4种常量详解 常见表达式详解
本文详细介绍了C语言中的数据与数据类型,包括常量、变量、表达式和函数等内容。常量分为整型、实型、字符型和字符串常量,其中整型常量有十进制、八进制和十六进制三种形式;实型常量包括小数和指数形式;字符型常量涵盖常规字符、转义字符及八进制、十六进制形式;字符串常量由双引号括起。变量遵循先定义后使用的规则,并需遵守命名规范。函数分为标准函数和自定义函数,如`sqrt()`和`abs()`。表达式涉及算术、赋值、自增自减和逗号运算符等,需注意运算符的优先级和结合性。文章还介绍了强制类型转换及隐式转换的概念。
|
8天前
|
Linux C语言
C语言 文件IO (系统调用)
本文介绍了Linux系统调用中的文件I/O操作,包括文件描述符、`open`、`read`、`write`、`lseek`、`close`、`dup`、`dup2`等函数,以及如何获取文件属性信息(`stat`)、用户信息(`getpwuid`)和组信息(`getgrgid`)。此外还介绍了目录操作函数如`opendir`、`readdir`、`rewinddir`和`closedir`,并提供了相关示例代码。系统调用直接与内核交互,没有缓冲机制,效率相对较低,但实时性更高。
|
21天前
|
C语言
【C语言】在限制定条件下数据移动
【C语言】在限制定条件下数据移动
24 1
|
28天前
|
存储 C语言
【c语言】职工信息管理系统 包含读取写入txt文件,职工信息的增删改查
【c语言】职工信息管理系统 包含读取写入txt文件,职工信息的增删改查
|
1月前
|
存储 C语言
【C语言】C语言-设备管理系统(源码+数据文件)【独一无二】
【C语言】C语言-设备管理系统(源码+数据文件)【独一无二】
|
1月前
|
存储 数据可视化 C语言
【C语言】C语言 手机通讯录系统的设计 (源码+数据+论文)【独一无二】
【C语言】C语言 手机通讯录系统的设计 (源码+数据+论文)【独一无二】
|
4月前
|
存储 C语言
C语言中的数据输入输出
C语言中的数据输入输出
35 0