鱼C论坛

 找回密码
 立即注册
查看: 72|回复: 0

[学习笔记] 每日一学21

[复制链接]
发表于 7 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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[20]="***************";

    char d2[20]="***************";

    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"字符串。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 03:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表