string.h中的常用函数

☆樱花仙子☆ 提交于 2019-12-04 18:48:51

字符串在我们程序中出现的频率很高,关于字符串的函数也是很多的,我们今天来介绍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;
}

如有错误在所难免请指正,相互学习,谢谢!

这里写图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!