1.strlen()
定义:
size_t strlen (const char *s);
表头文件:
#include <string.h>
说明:
strlen()用来计算指定的字符串s的长度, 不包括结束字符"\0"。
返回值:
返回字符串s的字符数。
示例:
/*取得字符串str的长度*/
#include<string.h>
main()
{
char *str = "12345678";
printf("str length = %d\n", strlen(str));
}
执行:
str length = 8
2.fgets
定义:
char * fgets(char * s,int size,FILE * stream);
表头文件:
#include<stdio.h>
说明:
fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间, 直到出现换行字符、读到文件尾或是已读了size-1个字符为止, 最后会加上'\0'作为字符串结束。
返回值:
fgets()若成功则返回s指针, 返回NULL则表示有错误发生。
相关函数:
open, fread, fscanf, getc
示例:
#include<stdio.h>
main()
{
char s[80];
fputs(fgets(s,80,stdin),stdout);
}
执行:
this is a test /*输入*/
this is a test /*输出*/
stream:输入流
标准输入:stdin(从终端上读取)
返回值:返回s
注意,当输入的字符个数小于size - 1 ,那么就会多输入一个'\n',
去掉'\n'
eg:
buf[strlen(buf) - 1] = '\0';
3.strcpy()
定义:
char *strcpy(char *dest,const char *src);
表头文件:
#include <string.h>
说明:
strcpy()会将参数src字符串拷贝至参数dest所指的地址。
返回值:
返回参数dest的字符串起始地址。
相关函数:
bcopy, memcpy, memccpy, memmove
附加说明:
如果参数dest所指的内存空间不够大, 可能会造成缓冲溢出(buffer Overflow)的错误情况, 在编写程序时请特别留意, 或者用strncpy()来取代。
示例:
#include<string.h>
main()
{
char a[30]="string(1)";
char b[]="string(2)";
printf("before strcpy() :%s\n",a);
printf("after strcpy() :%s\n",strcpy(a,b));
}
执行:
before strcpy() :string(1)
after strcpy() :string(2)
在拷贝的时候,会连同src后面的'\0'一起拷贝,
4.strcat
定义:
char *strcat (char *dest,const char *src);
表头文件:
#include <string.h>
说明:
strcat()会将参数src字符串拷贝到参数dest所指的字符串尾。第一个参数dest要有足够的空间来容纳要拷贝的字符串。
返回值:
返回参数dest的字符串起始地址
相关函数:
bcopy, memccpy, memcpy, strcpy, strncpy
范例:
#include <string.h.>
main()
{
char a[30]="string(1)";
char b[]="string(2)";
printf("before strcat() : %s\n",a);
printf("after strcat() : %s\n",strcat(a,b));
}
执行
before strcat () : string(1)
after strcat () : string(1)string(2)
注意:
dest指向的空间要足够大;
在连接的时候,dest后的'\0'被覆盖,src的'\0'作为新串的'\0';
5.strcmp
定义:
int strcmp(const char *s1,const char *s2);
表头文件:
#include <string.h>
说明:
strcmp()用来比较参数s1和s2字符串。字符串大小的比较是以ASCII 码表上的顺序来决定, 此顺序亦为字符的值。strcmp()首先将s1第一个字符值减去s2第一个字符值, 若差值为0则再继续比较下个字符, 若差值不为0则将差值返回。例(64位机如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。
返回值:
若参数s1和s2字符串相同则返回0。s1若大于s2则返回大于0的值。s1若小于s2则返回小于0 的值。
相关函数:
bcmp, memcmp, strcasecmp, strncasecmp, strcoll
示例:
#include<string.h>
main()
{
char *a="aBcDeF";
char *b="AbCdEf";
char *c="aacdef";
char *d="aBcDeF";
printf("strcmp(a,b) : %d\n",strcmp(a,b));
printf("strcmp(a,c) : %d\n",strcmp(a,c));
printf("strcmp(a,d) : %d\n",strcmp(a,d));
}
执行:
strcmp(a,b) : 32
strcmp(a,c) :-31
strcmp(a,d) : 0