strerror&perror使用

举报
芒果_Mango 发表于 2022/02/26 21:43:28 2022/02/26
【摘要】 总结: strlen -求字符串长度的库函数 strcpy-字符串拷贝函数 strcat - 字符串(连接)追加函数 strncpy() - 字符串拷贝函数-可控制拷贝的字符个数 strncat() - 字符串追加函数 strncmp() - 字符串比较函数 strstr - 字符串查找函数 strtok - 字符串切割 memcpy()-内存拷贝函数 memmove-内存拷贝函数(可处理...

总结:

strlen -求字符串长度的库函数

strcpy-字符串拷贝函数

strcat - 字符串(连接)追加函数

strncpy() - 字符串拷贝函数-可控制拷贝的字符个数

strncat() - 字符串追加函数

strncmp() - 字符串比较函数

strstr - 字符串查找函数

strtok - 字符串切割

memcpy()-内存拷贝函数

memmove-内存拷贝函数(可处理重叠的内存拷贝)

memcmp:内存比较函数

memset - 内存设置函数

strerror-可以返回C语言内置的错误码对应的错误信息

perror - 打印自定义内容+strerror

错误信息报告函数

strerror-可以返回C语言内置的错误码对应的错误信息

image-20220209221527615


返回错误码对应的错误信息

参数传错误码,翻译成错误信息,返回的是错误码对应的错误信息的字符串的首字符地址

C语言库函数调用失败的时候,会把错误码存储到errno变量中


#include<string.h>
int main()
{
     printf("%s\n",strerror(0));
     printf("%s\n",strerror(1));
     printf("%s\n",strerror(2));
     printf("%s\n",strerror(3));
    return 0;
}

打印结果:
No error
Operation not permitted
No such file or directory
No such process

应用:

int main()
{
    FILE* pf = fopen("test.txt","r");
    if(pf == NULL)
    {
        printf("%s\n",strerror(errno));	//C会把错误码放到errno变量,打印错误码对应的错误信息
        
    }
    else
    {
        printf("打开成功\n");
    }
    return 0;
}
//fopen():打开文件的函数,如果打开成功,返回指向该文件的文件指针FILE* 如否则返回NULL
//r:只读方式打开

由于我们没有此文件:所以打印结果

No such file or directory


perror - 打印自定义内容+strerror

image-20220209221535631

string:自定义字符


int main()
{
    FILE* pf = fopen("test.txt", "r");
    if (pf == NULL)
    {
        perror("测试");
        perror("测试:\n");
        perror("\n");
    }
    else
    {
        printf("打开成功\n");
    }
    return 0;
}

打印结果:

测试: No such file or directory
测试:
: No such file or directory

: No such file or directory

如果perror中有内容,先打印内容,然后自动在后面加上冒号: 然后打印错误信息


缺点:不想打印时也打印了


image-20220209221549927
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。