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。