字符串在我们程序中出现的频率很高,关于字符串的函数也是很多的,我们今天来介绍string.h头文件中的几个常用的函数:
1.strlen
函数名:strlen
功 * 能:求得字符串的长度
说 * 明:strlen(str)为字符串str的长度
实 * 例:
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "I love Acm";
printf("%d\n",strlen(str));//输出结果为 10
return 0;
}
2.strcpy
函数名:strcpy
功 * 能:将一个字符串赋值给另一个字符串
说 * 明:strlen(str1,str2)表示将str2赋值给str1
实 * 例:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "I love Acm";
char str2[15];
strcpy(str2,str1);
printf("%s\n",str2);//输出结果为 I love Acm
return 0;
}
3.strncpy
函数名:strncpy
功 * 能:将一个字符串的前一部分字符赋给另一字符串
说 * 明:strncpy(str1,str2,len) 表示将str2的前len个字符赋给str1
实 * 例:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "I Love Acm";
char str2[20];
strncpy(str2,str1,6);
printf("%s\n",str2);
//输出结果为I Love
return 0;
}
4.strcmp
函数名:strcmp
功 * 能:比较两个字符串的大小
说 * 明:strcmp(str1,str2) 前者大则值为1,相同则为0,后者大则为-1
实 * 例:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "I love Acm";
char str2[] = "I LOVE ACM";
if(!strcmp(str1,str2))
printf("they are equal\n");
else if(strcmp(str1,str2)==1)
printf("str1 is greater than str2\n");
else
printf("str1 is lower than str2\n");
//输出结果为 str1 is greater than str2
return 0;
}
5.stricmp
函数名:stricmp
功 * 能:比较两个字符串忽略大小写后的大小
说 * 明:stricmp(str1,str2) 前者大则值为1,相同则为0,后者大则为-1
实 * 例:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "I love Acm";
char str2[] = "I LOVE ACM";
if(!stricmp(str1,str2))
printf("they are equal\n");
else if(stricmp(str1,str2)==1)
printf("str1 is greater than str2\n");
else
printf("str1 is lower than str2\n");
//输出结果为 they are equal
return 0;
}
6.strcat
函数名:strcat
功 * 能:将两个字符串合为一
说 * 明:strcat()
实 * 例:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[20] = "I love";
char str2[] = "Acm";
strcat(str1," ");
strcat(str1,str2);
printf("%s\n",str1);
/*str1和str2所指内存区域不可以重叠且
str1必须有足够的空间来容纳str2的字符串。*/
return 0;
}
7.strchr
函数名:strchr
功 * 能:查询某个字符在某字符串中首次出现的位置
说 * 明:strchr(str,’c’)表示’c’字符在str首次出现的位置
实 * 例:
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "I love Acm";
printf("%d\n",strchr(str,'o')-str); //输出结果为3 为'o'对应的下标
return 0;
}
8.strnset
函数名:strnset
功 * 能:将一个字符串前n个字符都设为指定字符
说 * 明:strnset(str,’x’,n) 表示将字符串str的前n个字符变成’x’
实 * 例:
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "I love Acm";
/*注意不能写 char *str = "I love Acm"然后调用strnset函数
因为这里的str指向的常量区"I love Acm"的地址 是不能再被更改指向内容的*/
strnset(str,'x',6);
printf("%s\n",str);
//输出结果为 xxxxxx Acm
return 0;
}
9.strtod
函数名:strtod
功 * 能:将字符串转化为浮点数
说 * 明:strtod(str,&endptr);
将字符串str转化成浮点数并将因条件不合导致结束的指针由endptr传回
实 * 例:
/*strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号
才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。
若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。
参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。 */
#include <stdio.h>
#include <string.h>
int main()
{
char *endptr;
char a[] = "12345.6789";
char b[] = "1234.567qwer";
char c[] = "-232.23e4";
printf("a=%lf\n",strtod(a,NULL));
printf("b=%lf\n",strtod(b,&endptr));
printf("endptr=%s\n",endptr);
printf("c=%lf\n",strtod(c,NULL));
/*输出结果为
a=12345.678900
b=1234.567000
endptr=qwer
c=-2322300.000000 */
return 0;
}
10.strupr
函数名:strupr
功 * 能:将字符串中小写字母变成大写字母
说 * 明:strupr(str)表示指向小写字母变大写字母后的str的指针
实 * 例:
/*strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号
才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。
若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。
参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。 */
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "abcdefg";
printf("%s\n",strupr(str1));
//输出结果为 ABCDEFG
return 0;
}
如有错误在所难免请指正,相互学习,谢谢!
来源:CSDN
作者:liusuHeart
链接:https://blog.csdn.net/liusuHeart/article/details/78746991