目录
#strlen
#strcpy和strncpy
##strcpy
##strcnpy
#strcat和strncat
##strcat
##strncat
#strcmp和strncmp
##strcmp
##strncmp
#题目
strlen函数在使用前需要添加一个头文件:#include
函数声明:size_tstrlen(const char *s);
函数功能:获取字符串的长度,不包括‘\0’。
返回值:返回字符串中的字符个数(空格也算一个字符)
例:
#inclue
#include
int main()
{
char str[]="hello world";
int len=strlen(str);
printf("%d",len);//len=11
}
函数声明:char *strcpy(char *dest,const char *src);
函数说明:拷贝src指向的字符串到dest指针指向的内存中,‘\0’也会拷贝过去。
函数返回值:目的内存的地址。
※※注意:在使用此函数时,必须保证dest指向的内存空间足够大,否则会出现内存污染。
例:
#include
#include
int main()
{
char str[]="hello world";
char s[]="hello earth";
strcpy(str,s);
printf("%s",str);//打印结果是hello earth
}
函数声明:char *strncpy(char *dest,const char *src,size_tn);
函数说明:将src指向的字符串前n个字节,拷贝到dest指向的内存中。
返回值:目的内存的首地址。
※※注意:1.strncpy不拷贝‘\0’
2.如果n大于src指向的字符串中的字符个数,则在dest后面填充n-strlen(src)个'\0'
例:
#include
#include
int main()
{
char str[]="hello world";
char s[]="hello earth";
strncpy(str,s,8);
printf("%s",str);
}
函数声明:char *strcat(char *dest,const char *src);
函数功能:strcat函数追加src字符串到dest指向的字符串的后面,追加的时候会追加'\0'。
※※注意:保证dest指向的内存空间足够大。
例:
#include
#include
int main()
{
char str[100]="hello world";
char s[]="hello";
strcat(str,s);
printf("%s",str);
}
函数声明:char *strncat(char *dest,const char *src,size_tn);
追加src指向的字符串的前n个字符,到dest指向的字符串的后面。
※※注意:如果n大于src的字符个数,则只将src字符串追加到dest指向的字符串的后面,追加的时候会追加'\0'
例:
#include
#include
int main()
{
char str[100]="hello world";
char s[]="hello";
strncat(str,s,4);
printf("%s",str);
}
函数声明:int strcmp(const char *s1,const char *s2);
函数说明:比较s1和s2指向的字符串的大小。
比较的方法:逐个字符去比较ASCII码,一旦比较出大小则返回。
返回值:
如果s1指向的字符串大于s2指向的字符串,返回1
如果s1指向的字符串小于s2指向的字符串,返回-1
如果相等的话返回0
例:
#include
#include
int main()
{
char str1[]="hello world";
char str2[]="hello world";
int ret;
ret=strcmp(str1,str2);
printf("%d",ret);//ret==0
}
函数声明:int strncmp(const char *s1,const char *s2,size_t n);
函数说明:比较s1和s2指向的字符串中的前n个字符
例:
#include
#include
int main()
{
char s1[]="hello world";
char s2[]="hello earth";
int ret;
ret=strncmp(s1,s2,5);
if(ret>0)
printf("s1的前五个字符大于s2的前五个字符\n");
else if(ret<0)
printf("s1的前五个字符小于s2的前五个字符\n");
else
printf("s1的前五个字符等于s2的前五个字符\n");
}
关于字符串的知识点我暂时梳理了这么多,还有许多未涉及到的地方,希望大家给予意见,接下来让我们做一道比较有意思的题目。
输入n行身份证号,按照年龄排序(从大到小)并输出。
#include
#include
int main()
{
char a[100][100],birth[100][100],s[100];
int n,i,j;scanf("%d",&n);
gets(s);
for(i=0;i
本片文章内容到此结束,谢谢大家!