char *strtok(char *str1, char *str2);
strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串(此时返回分割符前面的字符串),往后的调用则将参数s设置成NULL(返回分隔符后的字符串)。每次调用成功则返回被分割出片段的指针,当没有被分割的串时则返回NULL。
注意:会忽略掉连续的分隔符
下面程序输出为:
[abc]
[d]
#include <stdio.h> #include <string.h> int main(void){ //如果有连续的分隔符,则会被忽略掉 char input[]="abc,,d,,"; char *p; p=strtok(input, ","); if(p) printf("[%s]\n", p); p=strtok(NULL, ","); if(p) printf("[%s]\n", p); p=strtok(NULL, ","); if(p) printf("[%s]\n", p); while(1){} return 0; }
举例:IP合法性
详细描述:
请实现如下接口
boolisIPAddressValid(constchar* pszIPAddr)
输入:pszIPAddr 字符串
输出:true 有效的IP地址,false,无效的IP地址
约束
1. 输入IP为XXX.XXX.XXX.XXX格式
2. 字符串两端含有空格认为是合法IP
3. 字符串中间含有空格认为是不合法IP
4. 类似于 01.1.1.1, 1.02.3.4 IP子段以0开头为不合法IP
5. 子段为单个0 认为是合法IP,0.0.0.0也算合法IP
<!--EndFragment-->
#include "IPAddressValid.h" #include <stdio.h> #include <string.h> #include <string> //对每个字段进行检查 bool check_token(char *token){ //printf("token[%s]\n", token); if(token==NULL || token=="") return false; //0开头又不是单个0的认为不合法 int token_len=strlen(token); if(token_len>=2 && *token=='0'){ return false; } //必须在0~255 int i=atoi(token); if(i<0 || i>255) return false; return true; } bool isIPAddressValid(const char* pszIPAddr) { // 请在此处实现 if(pszIPAddr==NULL){ return false; } char *pszIPAddr2=const_cast<char *>(pszIPAddr); //去掉首尾空格pIP[0 ... pIpLen) int len=strlen(pszIPAddr); int preBlankNum=0; int postBlankNum=0; char *p=NULL; p=pszIPAddr2; while(*p==' '){ preBlankNum++; ++p; } p=pszIPAddr2+len-1; while(p>=pszIPAddr2 && *p==' '){ postBlankNum++; --p; } char *pIP=NULL; int pIpLen=len-preBlankNum-postBlankNum; pIP=(char *)malloc(sizeof(char)*(pIpLen+1)); for(int i=0;i<pIpLen;i++){ *(pIP+i)=*(pszIPAddr+i+preBlankNum); } *(pIP+pIpLen)='\0'; //printf("--->[%s]\n", pIP); if( *pIP=='.' || *(pIP+pIpLen-1)=='.') return false; //字符串中间含有空格认为是不合法IP,并且为.或者数字 for(int i=0;i<pIpLen;i++){ if( !(*(pIP+i)>='0'&& *(pIP+i)<='9') && !(*(pIP+i)=='.') ){ return false; } } //用.来split字符串 char *delim="."; char *token=NULL; int token_num=0; token=strtok(pIP, delim); if(token!=NULL){ token_num++; bool flag=check_token(token); if(flag==false) return false; } while(token!=NULL){ token=strtok(NULL, delim); printf("[%s] ", token); if(token!=NULL){ token_num++; bool flag=check_token(token); if(flag==false) return false; } } if(token_num!=4) return false; return true; }
相关推荐
这个例子从文本文件ad9361.txt一行一行读取数据,通过spi设置寄存器值。支持命令读写:spidev_test -r F1 -w A0,-r参数表示寄存器地址,-w表示要写入的值,均为16进制(不要加0x开头)
C++字符串分割源码,破解版VC助手,兼容多个windows版本
一、用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串。 参数说明:str为要分解的字符串,delim为分隔符字符串。 返回值:从str开头开始的一个个被...
C语言分隔字符串函数接口strsep int strsep(char* line, char* lines[MAXSUBSTR], char* delim) 利用strtok实现
这些是常用的字符串操作函数,有些和C中的同名函数意义完全一致. strrev是把一个字符串翻转. strtolower和strtoupper的意思应该不用解释了. ucfirst是把字符串的第一个字符变成大写. substr是返回字符串的一个...
一、用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串。 参数说明:str为要分解的字符串,delim为分隔符字符串。 返回值:从str开头开始的一个个被...
字符串相关函数介绍,strchr ,strstr,strtok
C语言strlen()函数:返回字符串的长度 头文件: #include <string> strlen()函数用来计算字符串的长度,其原型为: unsigned int strlen (char *s); 【参数说明】s为指定的字符串。 strlen()用来计算指定的...
strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok...
1、问题引入 自己在写一个linux下的模拟执行指令...2、自己写的字符串分割函数:用于分割指令,比如cat a.c最后会被分割成cat和a.c两个字符串、mv a.c b.c最后会被分割成mv和a.c和b.c三个字符串。 具体实现如下: #inc
* @param delimiter 边界上的分隔字符 * @param haystack 输入的字符串 * @param out 输出的字符串指针 * @return 分割成了多少个成员 */ int explode(char *delimiter, char *haystack, char *out[]) { int ...
C++字符串截取,例如:"adda,dagf,dfa,df",将','去除,将每部分字符出入一个指定数组
strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchr,strnchr,strlen,strnlen,strspn,strpbrk,strtok,strsep,memset,bcopy,memcpy,memmove,memcmp,memscan,strstr,memchr....对理解C语言和C编程有很大帮助。
string是STL里的标准类,习惯了使用指针操作C的char *字符串,刚开始并不是很适应,主要原因是对string.h里的函数没有找到合适的C++替换方法,因此,对常用的sring.h里的函数替换说明如下: strcpy: str.substr() ...
主要介绍了C语言切割多层字符串的方法,说了strtok的弱点,使用strtok_r的方法
1.字符串的拼接 使用c的函数char *strcat(char *str_des, char *str_sou); 将字符串str_sou接在字符串str_des后面(放在str_des的最后字符和“\0”之间)。...(input:字符串,a:分隔符); 之后调用: temp
原字符串中包含浮点数、逗号、字符串、整数,长整型数等,本程序实现的是取出其中的浮点数和长整型数
主要介绍 strcpy(),strncpy(), strcat(), strncat(), strcmp(), strncmp(), strchar(), strrchr(), strspn(), strcspn(), strpbrk(), strstr(), strlen(), strerror(), strtok()等。
这两个函数根据一个或多个分隔符解析字符串(字符数组)或字符串元胞数组。 我将它设计为 strtok.m 的替代品,因为它作为字符串解析函数不符合我的期望或要求。 这些功能无疑需要进一步增强和改进,因此欢迎您提出...