1.strlen
- 原型:unsigned int strlen(char *str);
- 功能:计算并返回一个字符串的长度。在计算字符串长度时,没有把字符串结束符(\0)计算在内。
- strlen只能用于计算字符串的长度,不能用于计算各种类型的数组长度。
2.strcmp
- 原型:int strcmp( const char *str1, const char *str2);
- eg:
char *str1, *str2; if(strcmp(str1,str2)<0) ... else if(strcmp(str1,str2)>0) ... else if(strcmp(str1,str2)==0) ... ......
-
功能:比较str1和str2这两个字符串的大小。比较的规则是从左往右比较两个字符串对应位置的字符的ASCII码值的大小,当码值不同也就是两个对应位置上的字符不相同时,或者遇到字符串结束符(\0),则返回结果。(当str1<str2时,返回负数;当str1=str2时,返回0;当str1>str2时,返回正数)
3.strcpy
- 原型:char *strcpy(char *to, const char *from);
- 功能:将以from为起始地址的字符串复制到以to为起始地址的地址空间中。字符串中的字符串结束符(\0)也会被复制过去。(to的空间大小一定要能够放得下str2中的字符串才可以)
4.strcat
- 原型:char *strcat(char *str1, const char *str2);
- 功能:把字符串str2连接到字符串str1后面,形成一个新的字符串。str2连接到str1后面时会自动覆盖掉str1原来的字符串结束符(\0),str2中的字符串结束符会一块连接过来。
5.strstr
- 原型:char *strstr(const char *str1, const char *str2);
- eg:
char str1[10], str2[10], *p;
scanf("%s%s", str1, str2);
p=strstr(str1,str2);
if(p==NULL)
puts( "Not Found!" );
else
puts(p);
- 功能:在字符串str1中查找是否存在字符串str2。如果存在,则返回一个指针,其指向字符串str2首次出现在字符串str1中的位置;如果不存在,则返回NULL。
6.strtok
- 原型:char *strtok(char *str1, const char *str2);
- eg:
char str1[]="acmbug tianlalo#csg";
char str2[]=" #";//空格和#都作为分割符
char *result = NULL;
result = strtok(str1,str2);
result = strtok(NULL,str2);
//结果为acmbug
// tianlalo
// csg
- 功能:把字符串str1按照str2中的字符分割成若干个字符串。str1是待分割的字符串,str2中存放的是作为分隔符的字符。返回值是被分割下来的字符串的首地址,当没有被分割下来的字符串时,则返回NULL。
- 注意:在用这个函数时,要把作为分隔符的字符全部写在str2中,书写方式和写字符串常量一样。另外,在第一次调用strtok函数时,第一个参数要写str1,之后的每次调用,第一个参数都要写成NULL!
7.memset
- void *memset(void *buffer, int ch, size_t count);
- eg:
int a[5], i;
memset( a, 0, sizeof(a) );
for(int i=0; i<5; i++){
printf("%d", a[i]);
}
//将数组中的每个元素都置为0
- 功能:将一段内存置为某个值
- 注意:memset只能将整型数组所有元素的值置为0或-1,当置为其他值时,程序编译运行虽然是正确的,但输出该数组的元素会发现其值与之前置的值不一样,这与memset的内部机制有关。用memset为char型数组置任何字符都是可以的。