C语言字符串处理函数

 

 

main(int argc,char* argv[ ])

argc是命令行总的参数个数
argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数,
char *argv[]是一个字符数组,其大小是int argc,主要用于命令行参数argv[]参数,数组里每个元素代表一个参数;

 

字符串切割函数 (strtok)


函数原型:char *strtok(char *s, char *delim); 
函数功能:把字符串s按照字符串delim进行分割,然后返回分割的结果。 
函数使用说: 
1.strtok函数的实质上的处理是,strtok在s中查找包含在delim中的字符并用NULL(’/0′)来替换,直到找遍整个字符串。这句话有两层含义:(1)每次调用strtok函数只能获得一个分割单位。(2)要获得所有的分割单元必须反复调用strtok函数。 
2.strtok函数以后的调用时的需用NULL来替换s. 
3.形参s(要分割的字符串)对应的变量应用char s[]=”….”形式,而不能用char *s=”….”形式。 
例子如下:

#include "stdlib.h"
#include "string.h"
#include <stdio.h>

/*
check:xftz#ip:192.168.31.116#port:8266#MAC:XX#
*/


void main(int argc,char* argv[])
{

    char* pdata;
    char* buf;
    pdata = argv[1];
    char* getdata[4];
    int i=0;
    /*
    接收的数据切割;
    */
    getdata[i] = strtok(pdata,"#");
    while(getdata[i] != NULL && i<4)
    {

        printf("data:%s\r\n",getdata[i]);
        i++;
        getdata[i]= strtok(NULL,"#");

    }


}


执行#./a.out server#192.168.31.28#8266#

 

 

我怎么从一个很长很长的字符串中,识别到某个字符串之后,开始从这个字符串截取到这个原字符串的最后一位?

这个问题是我同事问我的,当时我一脸懵逼,然后想到一个数组,然后对比查找,再然后获取位置,然后直接指针相减。

开发遇到的小问题。记录下来,便于自己思维总结。后面想起前面的数据库开发,只想喊一句我特么草!!!

strstr(pdata,"aa");

 

用sscanf()函数

给定一个字符串““hello, world”,仅保留world。(注意:“,”之后有一空格)

  sscanf(“hello, world”, "%*s%s", buf);
  printf("%s/n", buf);
  结果为:world
  %*s表示第一个匹配到的%s被过滤掉,即hello被过滤了
  如果没有空格则结果为NULL。
  sscanf的功能很类似于正则表达式, 但却没有正则表达式强大,所以如果对于比较复杂的字符串处理,建议使用正则表达式.

 

函数名: strstr

包含文件:string.h 

 

函数原型:

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

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。

str1: 被查找目标 

str2: 要查找对象 

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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值