webserver中所用到的函数

1.查看父串中是否存在字串

函数原型:

    #include <string.h>

    char *strstr(const char *haystack, const char *needle);

    由haystack所指向的字符串中,查看是否存在由neddle所指向的子串

函数参数:

    haystack:父串指针

    needle:字串指针

函数返回值:

    char * :若子串存在于父串之中,则返回子串在父串中的起始指针

    NULL : 父串中不存在子串





2.将格式化内容写(输出)到指定的字符串中

    函数原型:

    #include <stdio.h>

    int sprintf(char *str, const char *format, ...)

    函数参数:

    str :将要被写入的字符串指针

    format :将要写入的字符串。例如:"123";

    ...   :由format参数决定。例如:sprintf(str,"123");   sprintf(str,  "%s123",  "abc");

    函数返回值:

    成功:写入的字符串长度,不包括'\0'。但是'\0'存在字符串的末尾。

    失败:返回一个负数,代表没有写入成功

    注意事项:

    要确保str指向的字符从足够长,能够容纳将要写入的字符串

    sprintf(str, "%s”"123",  str); 第二个参数中可以连续出现""“”表示两个字符串。这个函数也可以实现字符串拼接的功能。




3.打开,遍历,关闭目录

    #include <sys/types.h>
    #include <dirent.h>    

    打开目录:    

函数原型:    

    DIR *opendir(const char *name)

参数:

    name :指向要打开的目录名。如果为空,函数返回空

返回值:

    DIR *:成功打开目录,返回一个指向目录流的指针(目录流?)

    NULL : 发生错误,返回NULL,且errno会被设置

注意事项:

    可以简单的理解为:该函数成功返回表示成功打开了一个目录



遍历目录:

函数原型:

    #include <dirent.h>
    struct dirent *readdir(DIR *dirp);

函数参数:

        dirp : opendir()的返回值,用来遍历dirp目录下的文件和目录

返回值:

    struct dirent * :成功,返回一个指向结构体的指针,该结构体包含了目录或者文件的相关信息(名称,类型等)

    NULL:遍历到最后一项,或者发生了错误。

注意事项:

    该函数通常和while()语句一起使用:while(  (dir=readdir ( dirp) ) )


关闭一个目录:

#include <sys/types.h>

 #include <dirent.h>

函数原型:

int closedir(DIR *dirp);

参数:

    dirp:opendir()的返回值,指定要关闭的目录。

返回值:

    0:关闭目录成功

    -1:出错,errno被设置



4.查看一个文件的相关信息(文件类型等信息)

函数原型:

       #include <sys/types.h>
       #include <sys/stat.h>
       #include <unistd.h>
       int stat(const char *pathname, struct stat *statbuf);

函数参数:

    pathname:  指向要查看的文件名

    statbuf :结构体指针类型,该结构体用来存放相关的文件信息

返回值:

    成功:0被返回

    失败:-1被返回

注意事项:

    使用该函数时,需要自己先定义一个结构体遍历:struct  stat  buf;

    使用该函数时,不用打开文件。

    struct  stat 的部分内容{

                mode_t    st_mode;//记录了文件类型和权限

                uid_t     st_uid;//该文件所有者的用户id

    }

    可以使用以下宏判断文件的类型:

    S_ISLNK (st_mode)    判断是否为符号连接
    S_ISREG (st_mode)    是否为一般文件
    S_ISDIR (st_mode)    是否为目录
    S_ISCHR (st_mode)    是否为字符装置文件
    S_ISBLK (s3e)        是否为先进先出
    S_ISSOCK (st_mode)   是否为socket

    

5.查看用户的相关信息

函数原型:

    #include <sys/types.h>

    #include <pwd.h>

    struct passwd *getpwuid(uid_t uid);

函数参数:

uid  : 用户uid , 可以通过stat()函数获得

函数返回值:

    struct passwd *  :成功,返回一个指向用户信息(结构体)的指针

    NULL: 发生错误,errno被设置

注意事项:

该函数使用时不用自己定义一个结构体变量,只需要定义一个指针用来接收getpwuid()函数的返回值。




6.打开文件

函数原型:

#include <sys/types.h>
#include <sys/stat.h>

#include <fcntl.h>

int open(const char *pathname, int flags);

int open(const char *pathname, int flags, mode_t mode);


函数参数:

pathname :指向了文件名

flags : 指定打开文件的方式

mode :指定文件的权限

函数返回值:

    file descriptor : 成功,返回一个文件描述符

    -1 :发生了错误

注意事项:

    要指定第三个参数,需要在第二个参数中指定O_CREAT or O_TMPFILE,否则第三个参数会被忽略

    必须包含以下一个flags:  O_RDONLY, O_WRONLY, or O_RDWR

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值