当前位置: 首页 > wzjs >正文

个人怎么做公司网站网站seo排名免费咨询

个人怎么做公司网站,网站seo排名免费咨询,网站建设与维护 电子版,网站搜索排名优化目录 1、stat、fstat、lstat、fstatat 函数2、chmod、fchmod 函数3、chown、fchown、lchown、fchownat函数4、truncate、ftruncate函数5、utime、utimes 函数6、mkdir、rmdir函数递归删除非空目录 7、opendir、fdopendir、readdir函数8、chdir、fchdir、getcwd 函数9、getpwnam…

目录

    • 1、stat、fstat、lstat、fstatat 函数
    • 2、chmod、fchmod 函数
    • 3、chown、fchown、lchown、fchownat函数
    • 4、truncate、ftruncate函数
    • 5、utime、utimes 函数
    • 6、mkdir、rmdir函数
      • 递归删除非空目录
    • 7、opendir、fdopendir、readdir函数
    • 8、chdir、fchdir、getcwd 函数
    • 9、getpwnam、getpwuid 函数
    • 10、getpwent、setpwent、endpwent函数
    • 11、getspnam、getspent、setspent、endspent函数
    • 12、crypt 函数

1、stat、fstat、lstat、fstatat 函数

头文件

	   #include <sys/types.h>#include <sys/stat.h>#include <unistd.h>///* Definition of AT_* constants */#include <fcntl.h>

struct stat 结构体

struct stat {dev_t     st_dev;     // 文件所在设备的 IDino_t     st_ino;     // 文件的 inode 号mode_t    st_mode;    // 文件类型和权限nlink_t   st_nlink;   // 硬链接数uid_t     st_uid;     // 文件所有者的用户 IDgid_t     st_gid;     // 文件所有者的组 IDdev_t     st_rdev;    // 设备 ID(如果是特殊文件)off_t     st_size;    // 文件大小(字节数)blksize_t st_blksize; // 文件系统 I/O 块大小blkcnt_t  st_blocks;  // 分配的 512B 块数time_t    st_atime;   // 最后访问时间time_t    st_mtime;   // 最后修改时间time_t    st_ctime;   // 最后状态改变时间
};

函数定义

stat函数

int stat(const char *pathname, struct stat *buf);

功能: 获取指定路径文件的状态信息。

参数:

  • pathname: 文件的路径名。
  • buf: 指向 struct stat 结构体的指针,用于存储文件的状态信息。

返回值:

  • 成功时返回 0,失败时返回 -1 并设置 errno。

特点:

  • 如果 pathname 是一个符号链接,则获取的是符号链接指向的文件的状态信息。
#include <sys/stat.h>
#include <stdio.h>int main() {struct stat buf;if (stat("example.txt", &buf) == 0) {printf("File size: %ld bytes\n", buf.st_size);} else {perror("stat");}return 0;
}

fstat函数

int fstat(int fd, struct stat *buf);

功能: 获取与文件描述符 fd 相关联的文件的状态信息。

参数:

  • fd: 文件描述符。
  • buf: 指向 struct stat 结构体的指针,用于存储文件的状态信息。

返回值:

  • 成功时返回 0,失败时返回 -1 并设置 errno。

特点:

  • 适用于已经打开的文件。
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>int main() {int fd = open("example.txt", O_RDONLY);if (fd == -1) {perror("open");return 1;}struct stat buf;if (fstat(fd, &buf) == 0) {printf("File size: %ld bytes\n", buf.st_size);} else {perror("fstat");}close(fd);return 0;
}

lstat 函数

int lstat(const char *pathname, struct stat *buf);

功能: 获取指定路径文件的状态信息。

参数:

  • pathname: 文件的路径名。
  • buf: 指向 struct stat 结构体的指针,用于存储文件的状态信息。

返回值:

  • 成功时返回 0,失败时返回 -1 并设置 errno。

特点:

  • 如果 pathname 是一个符号链接,则获取的是符号链接本身的状态信息,而不是它指向的文件。
#include <sys/stat.h>
#include <stdio.h>int main() {struct stat buf;if (lstat("symlink.txt", &buf) == 0) {printf("File size: %ld bytes\n", buf.st_size);} else {perror("lstat");}return 0;
}

fstatat函数

int fstatat(int dirfd, const char *pathname, struct stat *buf,int flags);

功能: 获取相对于目录文件描述符 dirfd 的指定路径文件的状态信息。

参数:

  • dirfd: 目录文件描述符,可以是 AT_FDCWD(表示当前工作目录)。
  • pathname: 文件的路径名(相对于 dirfd)。
  • buf: 指向 struct stat 结构体的指针,用于存储文件的状态信息。
  • flags: 控制行为的标志,如 AT_SYMLINK_NOFOLLOW。

返回值:

  • 成功时返回 0,失败时返回 -1 并设置 errno。

特点:

  • 如果 flags 包含 AT_SYMLINK_NOFOLLOW,则不会跟随符号链接。 适用于相对路径操作。
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>int main() {struct stat buf;if (fstatat(AT_FDCWD, "example.txt", &buf, 0) == 0) {printf("File size: %ld bytes\n", buf.st_size);} else {perror("fstatat");}return 0;
}

总结

stat: 获取文件状态,跟随符号链接。
fstat: 获取已打开文件的状态。
lstat: 获取文件状态,不跟随符号链接。
fstatat: 获取相对于目录文件描述符的文件状态,支持标志控制行为。

2、chmod、fchmod 函数

头文件

#include <sys/stat.h>

函数定义

chmod函数

int chmod(const char *pathname, mode_t mode);

功能: 修改指定路径文件的权限。

参数:

  • pathname: 文件的路径名。
  • mode: 新的权限模式,通常是一个八进制数(如 0644)或通过宏(如 S_IRUSR)组合。

返回值:

  • 成功时返回 0,失败时返回 -1 并设置 errno。

特点:

  • 修改的是文件路径对应的文件的权限。
  • 如果 pathname 是一个符号链接,则修改的是符号链接指向的文件的权限。

示例

#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>int main()
{
#if 0//直接修改文件权限if(chmod("hello.txt",0444) < 0){perror("chmod error");return -1;}printf("chomd success\n");
#endifstruct stat st = {0};stat("hello.txt",&st);if(!chmod("hello.txt",st.st_mode | 0200)){printf("chmod 0200 success\n");}else{printf("chmod 0200 error\n");}#if 0//if(!chmod("hello.txt",st.st_mode&0773))if(!chmod("hello.txt",st.st_mode^0004)){printf("chmod 004 success\0");}else{printf("chmod 0004 error\0");}
#endif}

fchmod函数

int fchmod(int fd, mode_t mode);

功能: 修改与文件描述符 fd 相关联的文件的权限。

参数:

  • fd: 文件描述符。
  • mode: 新的权限模式。

返回值:

  • 成功时返回 0,失败时返回 -1 并设置 errno。

特点:

  • 修改的是已经打开的文件的权限。
  • 适用于需要通过文件描述符操作文件的场景。
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>int main() {int fd = open("example.txt", O_RDONLY);if (fd == -1) {perror("open");return 1;}if (fchmod(fd, 0644) == 0) {printf("File permissions changed successfully.\n");} else {perror("fchmod");}close(fd);return 0;
}

3、chown、fchown、lchown、fchownat函数

头文件

 	   #include <fcntl.h>           /* Definition of AT_* constants */#include <unistd.h>

函数定义
chown函数

int chown(const char *pathname, uid_t owner, gid_t group);

功能: 更改指定路径文件或目录的所有者和/或所属组。
参数:

  • pathname: 文件或目录的路径。
  • owner: 新的用户ID(UID),如果为-1,则不更改所有者。
  • group: 新的组ID(GID),如果为-1,则不更改所属组。
    返回值:
  • 成功返回0,失败返回-1并设置errno。
#include <stdio.h>
#include <unistd.h>int main()
{if(chown("hello.txt",1000,1000) < 0)\{perror("chown error");return -1;}perror("chown success");
}

fchown函数

int fchown(int fd, uid_t owner, gid_t group);

功能: 更改通过文件描述符指定的文件或目录的所有者和/或所属组。
参数:

  • fd: 文件描述符。
  • owner: 新的用户ID(UID),如果为-1,则不更改所有者。
  • group: 新的组ID(GID),如果为-1,则不更改所属组。
    返回值:
  • 成功返回0,失败返回-1并设置errno。

lchown函数

  int lchown(const char *pathname, uid_t owner, gid_t group);

功能: 类似于chown,但不跟随符号链接,即只更改符号链接本身的所有者和/或所属组,而不是链接指向的文件。
参数:

  • pathname: 符号链接的路径。
  • owner: 新的用户ID(UID),如果为-1,则不更改所有者。
  • group: 新的组ID(GID),如果为-1,则不更改所属组。
    返回值:
  • 成功返回0,失败返回-1并设置errno。

fchownat函数

 int fchownat(int dirfd, const char *pathname,uid_t owner, gid_t group, int flags);

功能: 类似于chown,但可以通过dirfd指定相对路径的基准目录,并且可以通过flags控制行为。
参数:

  • dirfd: 基准目录的文件描述符,如果pathname是绝对路径,则忽略此参数。
  • pathname: 文件或目录的路径。
  • owner: 新的用户ID(UID),如果为-1,则不更改所有者。
  • group: 新的组ID(GID),如果为-1,则不更改所属组。
  • flags: 控制行为的标志,例如AT_SYMLINK_NOFOLLOW表示不跟随符号链接。

返回值:

  • 成功返回0,失败返回-1并设置errno。

4、truncate、ftruncate函数

头文件

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

truncate函数

 int truncate(const char *path, off_t length);

功能:将指定路径的文件截断到指定长度,也可以扩容制造空洞文件

参数:

  • path:文件的路径名。
  • length:文件截断后的长度(以字节为单位)。

返回值:

  • 成功时返回 0。失败时返回 -1
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>int main()
{//截断if(truncate("hello.txt",5) < 0){perror("truncate error");return -1;}printf("truncate success\n");//扩充if(truncate("hello.txt",20) < 0){perror("truncate error");return -1;}printf("truncate success\n");
}

ftruncate函数

 int ftruncate(int fd, off_t length);

功能:将已打开的文件描述符对应的文件截断到指定长度,也可扩容制造空洞文件
在这里插入图片描述

参数:

  • fd:文件描述符。
  • length:文件截断后的长度(以字节为单位)。

返回值:

  • 成功时返回 0。失败时返回 -1

5、utime、utimes 函数

头文件

	   #include <sys/types.h>#include <utime.h>#include <sys/time.h>

utime函数

 int utime(const char *filename, const struct utimbuf *times);

功能

修改指定文件的访问时间和修改时间。

参数

  • filename:要修改时间的文件的路径名。
  • times:指向 struct utimbuf 结构体的指针,包含新的访问时间和修改时间。如果为
    NULL,则将文件的访问时间和修改时间设置为当前时间。

struct utimbuf 结构体

struct utimbuf {time_t actime;  // 访问时间(Access Time)time_t modtime; // 修改时间(Modification Time)
};

返回值

  • 成功时返回 0。
  • 失败时返回 -1,并设置 errno。
#include <stdio.h>
#include <sys/types.h>
#include <utime.h>
#include <time.h>int main()
{struct tm time = {0};time.tm_year = 2025 - 1990;time.tm_mon = 3 -1;time.tm_mday = 3;time.tm_hour = 14;time.tm_min = 57;time.tm_sec = 0;time_t sec = mktime(&time);  //获取对应时间的秒数struct utimbuf buf = {0};buf.actime = sec;buf.modtime = sec;if(utime("hello.txt",&buf) < 0){perror("utime error");return -1;}printf("utime success\n");return 0;
}

utimes函数

int utimes(const char *filename, const struct timeval times[2]);

功能

修改指定文件的访问时间和修改时间,支持微秒级精度。

参数

  • filename:要修改时间的文件的路径名。
  • times:指向 struct timeval 数组的指针,包含新的访问时间和修改时间。如果为
    NULL,则将文件的访问时间和修改时间设置为当前时间。

struct timeval 结构体

struct timeval {time_t tv_sec;  // 秒数suseconds_t tv_usec; // 微秒数
};

返回值

  • 成功时返回 0。
  • 失败时返回 -1,并设置 errno。
#include <sys/time.h>
#include <stdio.h>int main() {struct timeval times[2];times[0].tv_sec = 1633072800;  // 设置访问时间为 2021-10-01 00:00:00times[0].tv_usec = 0;times[1].tv_sec = 1633072800;  // 设置修改时间为 2021-10-01 00:00:00times[1].tv_usec = 0;if (utimes("example.txt", times) == -1) {perror("utimes failed");return 1;}printf("File times updated successfully.\n");return 0;
}

6、mkdir、rmdir函数

头文件

	   //mkdir函数#include <sys/stat.h>#include <sys/types.h>//rmdir函数#include <unistd.h>

mkdir函数

int mkdir(const char *pathname, mode_t mode);

功能

  • 创建一个新目录

参数

  • pathname:要创建的目录的路径名。
  • mode:目录的权限模式,通常使用八进制表示(如 0755)。权限模式可以通过以下宏进行组合:
    • S_IRWXU:用户(所有者)具有读、写、执行权限。
    • S_IRUSR:用户具有读权限。
    • S_IWUSR:用户具有写权限。
    • S_IXUSR:用户具有执行权限。
    • S_IRWXG:组用户具有读、写、执行权限。
    • S_IRGRP:组用户具有读权限。
    • S_IWGRP:组用户具有写权限。
    • S_IXGRP:组用户具有执行权限。
    • S_IRWXO:其他用户具有读、写、执行权限。
    • S_IROTH:其他用户具有读权限。
    • S_IWOTH:其他用户具有写权限。
    • S_IXOTH:其他用户具有执行权限。

返回值

  • 成功时返回 0。
  • 失败时返回 -1,并设置 errno。
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>int main()
{// 创建目录if(mkdir("dir",0777) < 0){perror("mkdir error");return -1;}printf("mkdir success\n");}

rmdir函数

int rmdir(const char *pathname);

功能

  • 删除一个空目录

参数

  • pathname:要删除的目录的路径名。

返回值

  • 成功时返回 0。
  • 失败时返回 -1,并设置 errno。

递归删除非空目录

#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <string.h>void remove_mydir(const char *pathname)
{DIR *dp = opendir(pathname);if (NULL == dp){perror("open dp error");return;}while (1){struct dirent *dirp = readdir(dp);if (dirp == NULL){break;}if (!(strcmp(dirp->d_name, ".")) || !(strcmp(dirp->d_name, "..")))continue;char buf[128] = "";strcat(buf, pathname);strcat(buf, "/");strcat(buf, dirp->d_name);struct stat st = {0};stat(buf, &st);if (S_ISREG(st.st_mode))unlink(buf);if (S_ISDIR(st.st_mode))remove_mydir(buf);}closedir(dp);remove(pathname);
}int main()
{remove_mydir("dir");return 0;
}

7、opendir、fdopendir、readdir函数

头文件

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

opendir函数

DIR *opendir(const char *name);

功能: 打开一个目录,返回指向目录流的指针。

参数: name:要打开的目录的路径名。

返回值

  • 成功时返回指向 DIR 结构的指针。
  • 失败时返回 NULL,并设置 errno。
#include <dirent.h>
#include <stdio.h>int main() {const char *dir_path = "example_dir";DIR *dir = opendir(dir_path);if (!dir) {perror("opendir failed");return 1;}printf("Directory '%s' opened successfully.\n", dir_path);closedir(dir);return 0;
}

fdopendir函数

DIR *fdopendir(int fd);

功能 :通过文件描述符打开目录,返回指向目录流的指针。
参数 :fd:已经打开的目录的文件描述符。
返回值

  • 成功时返回指向 DIR 结构的指针。
  • 失败时返回 NULL,并设置 errno。
#include <dirent.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>int main() {const char *dir_path = "example_dir";int fd = open(dir_path, O_RDONLY | O_DIRECTORY);if (fd == -1) {perror("open failed");return 1;}DIR *dir = fdopendir(fd);if (!dir) {perror("fdopendir failed");close(fd);return 1;}printf("Directory '%s' opened successfully via fd.\n", dir_path);closedir(dir); // 关闭目录流时会自动关闭文件描述符return 0;
}

readdir函数

struct dirent *readdir(DIR *dirp);

功能 :从目录流中读取下一个目录项。

参数

  • dirp:指向 DIR 结构的指针(由 opendir 或 fdopendir 返回)。

返回值

  • 成功时返回指向 struct dirent 的指针。
  • 到达目录末尾时返回 NULL。
  • 失败时返回 NULL,并设置 errno。
    struct dirent 结构
struct dirent {ino_t d_ino;       // 文件的 inode 号off_t d_off;       // 目录文件中的偏移量unsigned short d_reclen; // 记录长度unsigned char d_type;   // 文件类型char d_name[256];       // 文件名
};

示例-循环读取目录下的文件名

#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>int main()
{// 打开目录DIR *dp = opendir("dir");if (NULL == dp){perror("opendir error");return -1;}// 读取目录while (1){struct dirent *dirp = readdir(dp);if (NULL == dirp)break;printf("name = %s\n", dirp->d_name);}// 关闭目录closedir(dp);
}

8、chdir、fchdir、getcwd 函数

头文件

#include <unistd.h>

chdir函数

int chdir(const char *path);

功能:将当前进程的工作目录更改为指定的路径。
参数:path:目标目录的路径名。
返回值

  • 成功时返回 0。
  • 失败时返回 -1,并设置 errno。
#include <unistd.h>
#include <stdio.h>int main() {const char *new_dir = "/tmp";if (chdir(new_dir) == -1) {perror("chdir failed");return 1;}printf("Changed working directory to '%s'.\n", new_dir);return 0;
}

fchdir函数

int fchdir(int fd);

功能:通过文件描述符更改当前进程的工作目录。
参数:fd:已经打开的目录的文件描述符。
返回值

  • 成功时返回 0。
  • 失败时返回 -1,并设置 errno。
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>int main() {const char *new_dir = "/tmp";int fd = open(new_dir, O_RDONLY | O_DIRECTORY);if (fd == -1) {perror("open failed");return 1;}if (fchdir(fd) == -1) {perror("fchdir failed");close(fd);return 1;}printf("Changed working directory to '%s' via fd.\n", new_dir);close(fd);return 0;
}

getcwd函数

char *getcwd(char *buf, size_t size);

功能:获取当前工作目录的绝对路径。
参数

  • buf:存储路径的缓冲区。
  • size:缓冲区的大小。

返回值

  • 成功时返回指向 buf 的指针。
  • 失败时返回 NULL,并设置 errno。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>int main()
{//获取当前工作目录char buf[128] = "";getcwd(buf,sizeof(buf)-1);printf("buf = %s\n",buf);//改变工作路径if(chdir("/home")<0){perror("chdir error");return -1;}memset(buf,0,sizeof(buf));getcwd(buf,sizeof(buf)-1);printf("buf = %s\n",buf);if(mkdir("lisi",0777)<0){perror("mkdir error");return -1;}
}

9、getpwnam、getpwuid 函数

头文件

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

struct passwd 结构体

#include <pwd.h>struct passwd {char   *pw_name;   // 用户名uid_t   pw_uid;    // 用户 IDgid_t   pw_gid;    // 组 IDchar   *pw_dir;    // 用户主目录char   *pw_shell;  // 用户默认 shell
};

getpwnam函数

struct passwd *getpwnam(const char *name);

功能: 通过用户名查询用户信息。
参数 用户名(字符串)。
返回值

  • 成功时返回指向 struct passwd 结构体的指针。
  • 失败时返回 NULL,并设置 errno。

getpwuid函数

struct passwd *getpwuid(uid_t uid);

功能:通过用户 ID 查询用户信息。
参数:uid:用户 ID。
返回值

  • 成功时返回指向 struct passwd 结构体的指针。
  • 失败时返回 NULL,并设置 errno。
#include <stdio.h>
#include <sys/types.h>
#include <pwd.h>int main()
{// struct passwd *pwd = getpwnam("student");struct passwd *pwd = getpwuid(1000);if(NULL == pwd){perror("getpwname error");return -1;}printf("name = %s uid = %d home = %s\n",pwd->pw_name,pwd->pw_uid,pwd->pw_dir);
}

10、getpwent、setpwent、endpwent函数

头文件

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

函数定义

  struct passwd *getpwent(void);void setpwent(void);void endpwent(void);

getpwent函数
功能:从用户数据库(就是etc/passwd中的用户信息)中逐条读取用户信息。
返回值

  • 成功时返回指向 struct passwd 结构体的指针。
  • 失败或到达文件末尾时返回 NULL,并设置 errno。
#include <stdio.h>
#include <sys/types.h>
#include <pwd.h>int main()
{while (1){struct passwd *pwd = getpwent(); //读取用户信息if(pwd == NULL)break;printf("name = %s uid = %d home = %s\n",pwd->pw_name,pwd->pw_uid,pwd->pw_dir);}}

setpwent函数
功能

将用户数据库的读取位置重置到文件开头,以便重新开始遍历。

endpwent函数
功能

关闭用户数据库,释放相关资源。

#include <pwd.h>
#include <stdio.h>int main() {struct passwd *pwd;// 第一次遍历printf("First pass:\n");while ((pwd = getpwent()) != NULL) {printf("User: %s\n", pwd->pw_name);}setpwent(); // 重置读取位置// 第二次遍历printf("\nSecond pass:\n");while ((pwd = getpwent()) != NULL) {printf("User: %s\n", pwd->pw_name);}endpwent(); // 关闭用户数据库return 0;
}

11、getspnam、getspent、setspent、endspent函数

头文件

 #include <shadow.h>
#include <shadow.h>struct spwd {char *sp_namp;      // 用户名char *sp_pwdp;      // 加密后的密码long  sp_lstchg;    // 上次密码更改的日期(从1970-01-01开始的天数)long  sp_min;       // 密码最短有效天数long  sp_max;       // 密码最长有效天数long  sp_warn;      // 密码过期前的警告天数long  sp_inact;     // 密码过期后账户被锁定的天数long  sp_expire;    // 账户过期的日期(从1970-01-01开始的天数)unsigned long sp_flag; // 保留字段
};

函数定义

 struct spwd *getspnam(const char *name);struct spwd *getspent(void);void setspent(void);void endspent(void);

getspnam函数
功能

根据用户名从影子密码文件中查找并返回相应用户的密码信息。
参数:name:要查找的用户名。
返回值

  • 成功时返回指向 struct spwd 结构体的指针。
  • 失败时返回 NULL,并设置 errno。

getspent函数
功能
从影子密码文件中逐条读取用户密码信息。
返回值

  • 成功时返回指向 struct spwd 结构体的指针。
  • 失败或到达文件末尾时返回 NULL,并设置 errno。
#include <stdio.h>
#include <shadow.h>int main()
{
#if 1struct spwd *pwd = getspnam("student");if(NULL == pwd){perror("getspnam error");return -1;}printf("%s\n",pwd->sp_pwdp);
#endif// while(1)// {//     struct spwd *pwd = getspent();//     if(NULL == pwd)//         break;//     printf("%s %s\n",pwd->sp_namp,pwd->sp_pwdp);// }
}

setspent函数

将影子密码文件的读取位置重置到文件开头,以便重新开始遍历。

endspent函数

关闭影子密码文件并释放相关资源。

#include <shadow.h>
#include <stdio.h>int main() {struct spwd *spwd;// 第一次遍历printf("First pass:\n");while ((spwd = getspent()) != NULL) {printf("Username: %s\n", spwd->sp_namp);}setspent(); // 重置读取位置// 第二次遍历printf("\nSecond pass:\n");while ((spwd = getspent()) != NULL) {printf("Username: %s\n", spwd->sp_namp);}endspent(); // 关闭影子密码文件return 0;
}

12、crypt 函数

头文件

 #include <unistd.h>

函数定义

char *crypt(const char *key, const char *salt);

参数

  • key:需要加密的字符串(通常是用户密码)。
  • salt:用于加密的“盐值”(salt),通常是一个长度为 2 的字符串。盐值用于确保相同的密码在使用不同的盐值时生成的加密结果不同。

返回值

  • 成功时返回指向加密后字符串的指针。
  • 失败时返回 NULL,并设置 errno。
#include <stdio.h>
#include <crypt.h>
#include <unistd.h>int main()
{char *key = "888";   //需要加密的密码char *res = crypt(key, "$6$ZqEnV1wT$");if (res != NULL){printf("res = %s\n", res);}else{perror("crypt error");return -1;}
}
http://www.dtcms.com/wzjs/78212.html

相关文章:

  • 个人网站可以做百度搜索妈妈网站推广优化c重庆
  • 郏县网站制作哪家公司好脚上起小水泡还很痒是怎么回事
  • 微信公众号商城怎么制作沈阳专业seo
  • 广东购物网站建设报价杭州线上推广
  • 网站功能有哪些seo排名工具哪个好
  • 电商平台建站最近一周的新闻热点事件
  • 石家庄做网站百度推广百度搜索大数据怎么查
  • 做单页网站怎么选产品58黄页网推广公司
  • 网站开发工具js广告关键词
  • 网站建设与管理职责河南网站推广那家好
  • 做婚庆网站的功能定位武安百度seo
  • 免费个人网站建设大全好看的网页设计作品
  • abc网站建设seo快速排名工具
  • 南昌网站建设方案详细版seo网站怎么优化
  • 中国自适应网站建设线上推广员是做什么的
  • 上海制作网站公司网站app地推网
  • 给个网址2022年能直接看的360网站seo手机优化软件
  • 网站收录没图片黑帽seo优化
  • 网站首页生成静态页面seo优化技术
  • 深圳 网站制作百度app下载并安装
  • 设计感强的网站深圳网络推广平台
  • 花生壳如何做网站河南网站建设定制
  • 嘉定专业网站制作公司站长工具网站推广
  • 做网站外包创业游戏代理平台一天结一次
  • 寻找锦州网站建设如何能查到百度搜索排名
  • 网页设计教材海南seo
  • 网站后台 灰色网络seo是什么
  • 有没有哪个网站能够做简历免费网站建设模板
  • 成立网站是不是需要先成立公司网上代写文章一般多少钱
  • 珠海集团网站建设外包广东seo点击排名软件哪家好