字符串处理函数strcat和strtok
16lz
2021-01-22
C函数编辑
原型
extern char *strcat(char *dest,char *src);用法
#include <string.h> 在C++中,则存在于<cstring>头文件中。功能
把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。说明
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。举例
12345678910111213141516171819202122232425262728 | //strcat.c #include<syslib.h> #include<string.h> main() { chard[20]= "GoldenGlobal" ; char *s= "View" ; clrscr(); strcat (d,s); printf ( "%s" ,d); getchar (); return0; } //strcat.cpp #include<stdio.h> #include<string.h> #include<stdlib.h> main() { chard[20]= "GoldenGlobal" ; char *s= "View" ; system ( "cls" ); strcat (d,s); printf ( "%s" ,d); getchar (); return0; } |
原型编辑
char *strtok(char s[], const char *delim);2功能编辑
分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。例如:strtok("abc,def,ghi",","),最后可以分割成为abc def ghi.尤其在点分十进制的IP中提取应用较多。3说明编辑
strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串中包含的所有字符。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的指针。4返回值编辑
从s开头开始的一个个被分割的串。当查找不到delim中的字符时,返回NULL。所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。5使用编辑
strtok函数会破坏被分解字符串的完整,调用前和调用后的s已经不一样了。如果要保持原字符串的完整,可以使用strchr和sscanf的组合等。c
1234567891011121314151617 | #include<string.h> #include<stdio.h> intmain( void ) { charinput[16]= "abc,d" ; char *p; /**/ /*strtokplacesaNULLterminator infrontofthetoken,iffound*/ p= strtok (input, "," ); if (p) printf ( "%s\n" ,p); /**/ /*AsecondcalltostrtokusingaNULL asthefirstparameterreturnsapointer tothecharacterfollowingthetoken*/ p= strtok (NULL, "," ); if (p) printf ( "%s\n" ,p); return0; } |