strtok和strerror函数的认识和使用
2026/5/5 1:47:52 网站建设 项目流程

一、strtok函数

函数原型: char * strtok(char * str, const char *delim);

strerror函数的使用需要包含头文件<string.h>

功能:

  • 分割字符串:根据delim参数中指定的分隔符,将str字符串拆分为多个子字符串
  • 修改原始字符串:strtok函数会直接在原始字符串中插入’\0’终止符,替换分隔符的位置,因此原始字符串会被修改

参数

  • str:首次调用时传入未分割的字符串;后续调用传入NULL,表示继续分割同一个字符串
  • delim:包含分隔符的字符串,用于定义如何分割原字符串

返回值

  • 成功时返回指向当前字符串的指针
  • 没有更多子字符串时返回NULL

代码演示:

#include<stdio.h>#include<string.h>intmain(){charch[]="192.168.6.111";constchar*sep=".";constchar*str=NULL;charbuf[30]={0};strcpy(buf,ch);str=strtok(buf,sep);printf("%s\n",str);str=strtok(NULL,sep);printf("%s\n",str);return0;}

注意事项:

  • 破坏性:strtok函数会直接修改原字符串,将其中的分隔符替换为’\0’,如果需要保留原字符串,应先拷贝一份
  • 连续分隔符:多个连续的分隔符将会被视为单个分隔符,不会返回空字符串
  • 空指针处理:如果输入的str为NULL且没有前序调用,行为未定义

二、strerror函数

2.1 strerror函数的认识和使用

函数原型:

char* strerror ( int errnum );

strerror函数的使用需要包含头文件<string.h>

功能:

  • strerror函数可以通过参数部分的errnum表示**错误码,**得到对应的错误信息,并且返回这个错误信息字符串的首字符地址
  • strerror函数只针对标准库中的函数发生错误后设置的错误码的转换

参数:

  • errnum:表示错误码
    这个错误码⼀般传递的是 errno 这个变量的值,在C语⾔有⼀个全局的变量叫: errno ,当库函数的调⽤发⽣错误的时候,就会将本次错误的错误码存放在 errno 这个变量中,使⽤这个全局变量需要包含⼀个头⽂件 errno.h 。
  • 返回值:函数通过返回错误码得到错误信息的字符串的首字符地址

代码演示:

//例1:#include<stdio.h>#include<string.h>#include<errno.h>intmain(){for(inti=0;i<=10;i++){printf("%d:%s\n",i,strerror(i));}return0;}

在Windows11+VS2022环境下输出的结果为:

//例2:#include<stdio.h>#include<string.h>#include<errno.h>intmain(){FILE*pFile=NULL;//fopen函数以读的方式打开文件,如果文件不存在,则打开失败pFile=fopen("unexit.ent","r");if(pFile==NULL){printf("错误信息是:%s\n",strerror(errno));return1;//错误返回}return0;}

输出结果:

2.2 perror函数的认识和使用

函数原型:

void perror ( const char * str );

perror函数相当于一次将上述代码中的“printf(“错误信息是:%s\n”, strerror(errno));”完成了,直接将错误信息打印出来。perror函数打印完参数部分的字符串后,再打印一个冒号和空格,再打印错误信息。

代码演示:

#include<stdio.h>#include<string.h>#include<errno.h>intmain(){FILE*pFile=NULL;//fopen函数以读的方式打开文件,如果文件不存在,则打开失败pFile=fopen("unexit.ent","r");if(pFile==NULL){perror("错误信息是");return1;//错误返回}return0;}

输出结果:


需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询