6bingame 发表于 3 天前

每日一学21

本帖最后由 6bingame 于 2024-12-18 16:59 编辑

标准C库函数3

字符串复制函数


字符串复制函数用于把一个字符串复制到另一个字符中,形式如下

原型                                                        功能
char*strcpy(char*d,char*s)                            复制字符串s到字符串d,返回字符串
char*strncpy(char*d,char*s,int n)                      复制字符串s中至多n个字符到字符串d;如果s小于n个字符,用'\0'补上,返回字符串d
void*memcpy(void*d,void*s,int n)               从s复制n个字符到d,返回字符串d
void*memmove(void*d,void*s,int n)           和memcpy相同,即使d和s部分也运行

例题1:字符串复制函数的应用

#include<stdio.h>

#include<string.h>

int main()
{
    char*s1="Hello World";

    char*s2="Hello World";

    char d1="***************";

    char d2="***************";

    strcpy(d1,s1);          //调用字符串复制函数

    printf("%s\n",d1);

    strncpy(d2,s2,strlen(s2));      //调用字符串复制函数

    printf("%s\n",d2);

    getchar();

    return 0;
}

例题分析:
strcpy()函数中的s和d所指内存区域不可以重叠,且d必须有足够的空间来容纳s的字符串,最后返回指向d的指针。如果strncpy()函数中s的前n个字节不含NULL字符,则结果不会以NULL字符结束。如果s的长度小于n个字节,则以NULL填充d,直到复制完n个字节。s和d所指内存区域不可以重叠,且d必须有足够的空间来容纳s的字符串,最后返回指向d的指针。



字符串比较函数

字符串比较函数用于比较两个字符串的大小,以ASCII码为基础,形式如下

原型                                                        功能
int strcmp(char*d,char*s)                         比较字符串d与字符串s。如果a<s,返回-1;如果d==s,返回0;
int strnmp(char*d,char*s,int n)           比较字符串d中至多n个字符与字符串s。如果 d<s,返回-1;如果d==s,返回0;返回0;如果d>s,返回1
int memcmp(void*d,void*s,int n)           比较d的首先n个字符与s,和strcmp返回值相同

例题2:字符串比较函数的应用

#include<stdio.h>

#include<string.h>

int main()
{
    char*s1="Hello,Programmers!";

    char*s2="Hello,programmers!";

    int r=strcmp(s1,s2);

    if(!r)

      printf("s1 and s2 are identical");

    else

      if(r<0)

      printf("s1 less than s2");

    else

      printf("s1 greater than s2");

    getchar();

    return 0;

}

例题分析:
当s1<s2时,返回值=-1;当s1=s2时,返回值=0;当s1>s2时,返回值=1



字符串查找函数

字符串查找函数用于在一个字符串中查找字符串出现的位置,形式如下表所示

原型                                                      功能
char*strchr(char*d,char c)                          返回一个指向字符串d中字符c第1次出现的指针;或者如果没有找到c,则返回指向NULL的指针
char*strst(char*d,char*s)                         返回一个指向字符串d中字符s第1次出现的指针;或者如果没有找到s,则返回指向NULL的指针
void*memchr(void*d,char c,int n)            返回一个指向被d所指向的n个字符中c第1次出现的指针;或者如果没有找到c,则返回指向NULL的指针

例题3:字符串查找函数的应用

#include<stdio.h>

#include<math.h>

int main()
{
    char*s="Hello World";

    char*ps="llo";

    char*p;

    p=strchr(s,'W');

    if(p)

      printf("%s\n",p);

    else

      printf("Not Found!\n");

    p=strstr(s,ps);

    if(p)

      printf("%s\n",p);

    else

      printf("Not Found!\n");

    getchar();

    return 0;
}

例题分析:
strchr()函数查找字符'W'首次出现的位置,然后返回了"World"字符串;strstr()函数查找字符串"llo"首次出现的位置,然后返回了"llo World"字符串。
页: [1]
查看完整版本: 每日一学21