C语言函数大全-- s 开头的函数(4)
C语言函数大全
本篇介绍C语言函数大全-- s 开头的函数(4)
1. strdup
1.1 函数说明
函数声明 | 函数功能 |
---|---|
char * strdup(const char *s); | 用于将一个以 NULL 结尾的字符串复制到新分配的内存空间中 |
注意:
strdup()
函数返回指向新分配的内存空间的指针,如果空间不足则返回NULL
。调用者负责释放返回的指针所指向的内存空间。strdup()
函数与strcpy()
函数类似,但是它会动态地分配内存空间,而strcpy()
需要调用者提供足够大的目标缓冲区。
1.2 演示示例
#include <stdio.h>
#include <string.h>
#include <stdlib.h>int main()
{char *source = "Hello World!";char *destination = strdup(source);if(destination != NULL) {printf("Original string: %s\n", source);printf("Duplicated string: %s\n", destination);free(destination); // 释放内存,避免内存泄漏}return 0;
}
1.3 运行结果
2. stricmp
2.1 函数说明
函数声明 | 函数功能 |
---|---|
int stricmp(const char *s1, const char *s2); | 用于比较两个字符串的字母序是否相等,忽略大小写 |
返回值:
- 如果
s1
和s2
代表的字符串相等(忽略大小写),则返回0
;- 如果
s1
比s2
小,则返回负数;- 如果
s1
比s2
大,则返回正数。
2.2 演示示例
#include <stdio.h>
#include <string.h>int main()
{char *s1 = "Hello";char *s2 = "hElLo";int result = stricmp(s1, s2); // 忽略大小写比较if(result == 0) {printf("The strings are equal.\n");} else if(result < 0) {printf("%s is less than %s.\n", s1, s2);}else {printf("%s is greater than %s.\n", s1, s2);}return 0;
}
2.3 运行结果
3. strerror
3.1 函数说明
函数声明 | 函数功能 |
---|---|
char *strerror(int errnum); | 用于将指定的错误码转换为相应的错误信息 |
参数:
- errnum : 要转换为错误信息的错误码,通常是由系统调用或库函数返回的错误码。
返回值:
指向错误信息字符串的指针,该字符串描述了与错误码相关的错误
3.2 演示示例
#include <stdio.h>
#include <string.h>
#include <errno.h>int main()
{FILE *file = fopen("nonexistent.txt", "r");if(file == NULL) {int errcode = errno; // 获取发生的错误码printf("Error opening file: %s\n", strerror(errcode)); // 将错误码转换为错误信息并打印} else {printf("File opened successfully.\n");fclose(file);}return 0;
}
3.3 运行结果
4. strcmpi
4.1 函数说明
函数声明 | 函数功能 |
---|---|
int strcmpi(const char *s1, const char *s2); | 用于比较两个字符串的字母序是否相等,忽略大小写 |
返回值:
- 如果
s1
和s2
代表的字符串相等(忽略大小写),则返回0
;- 如果
s1
比s2
小,则返回负数;- 如果
s1
比s2
大,则返回正数。
4.2 演示示例
#include <stdio.h>
#include <string.h>int main()
{char *s1 = "Hello";char *s2 = "hElLo";int result = strcmpi(s1, s2); // 忽略大小写比较if(result == 0) {printf("The strings are equal.\n");} else if(result < 0) {printf("%s is less than %s.\n", s1, s2);} else {printf("%s is greater than %s.\n", s1, s2);}return 0;
}
看到这里,可能会疑惑 上面不是已经有了 忽略大小写的字符串比较了嘛?
那 strcmpi
和 stricmp
有什么区别呢?
虽然它们的实现功能相同,但是不同的编译器或操作系统可能会提供其中一个或两个函数。在具备这两个函数的系统中,strcmpi
常常作为 VC(Visual C++)
和 Borland C++
的扩展库函数,而 stricmp
则是 POSIX
标准中定义的函数,在许多 类UNIX系统 上可用。因此,如果需要编写可移植的代码,则应该使用 stricmp
函数,而不是 strcmpi
函数。
4.3 运行结果
5. strncmp
5.1 函数说明
函数声明 | 函数功能 |
---|---|
int strncmp(const char *s1, const char *s2, size_t n); | 用于比较两个字符串的前n个字符是否相等 |
参数:
- s1 : 待比较的第一个字符串
- s2 : 待比较的第二个字符串
- n : 要比较的字符数
返回值:
- 如果
s1
和s2
代表的字符串相等(忽略大小写),则返回0
;- 如果
s1
比s2
小,则返回负数;- 如果
s1
比s2
大,则返回正数。
5.2 演示示例
#include <stdio.h>
#include <string.h>int main()
{char *s1 = "Hello World";char *s2 = "Hell!";int result = strncmp(s1, s2, 4); // 比较前4个字符if(result == 0) {printf("The first 4 characters are equal.\n");} else if(result < 0) {printf("The first 4 characters of %s are less than %s.\n", s1, s2);} else {printf("The first 4 characters of %s are greater than %s.\n", s1, s2);}return 0;
}
5.3 运行结果
6. strncmpi
6.1 函数说明
函数声明 | 函数功能 |
---|---|
int strncmpi(const char *s1, const char *s2, size_t n); | 用于比较两个字符串的前n个字符是否相等,忽略大小写 |
参数:
- s1 : 待比较的第一个字符串
- s2 : 待比较的第二个字符串
- n : 要比较的字符数
返回值:
- 如果
s1
和s2
代表的字符串相等(忽略大小写),则返回0
;- 如果
s1
比s2
小,则返回负数;- 如果
s1
比s2
大,则返回正数。
6.2 演示示例
#include <stdio.h>
#include <string.h>int main()
{char *s1 = "Hello World";char *s2 = "heLL!";int result = strncmpi(s1, s2, 4); // 比较前4个字符,忽略大小写if(result == 0) {printf("The first 4 characters are equal (case insensitive).\n");} else if(result < 0) {printf("The first 4 characters of %s are less than %s (case insensitive).\n", s1, s2);} else {printf("The first 4 characters of %s are greater than %s (case insensitive).\n", s1, s2);}return 0;
}
注意:
strncmpi
函数不是C
语言标准库中的函数,但在某些编译器或操作系统中可能会提供。
7. strncpy
7.1 函数说明
函数声明 | 函数功能 |
---|---|
char *strncpy(char *dest, const char *src, size_t n); | 用于将一个字符串的一部分拷贝到另一个字符串中 |
参数:
- dest : 目标字符串
- src : 源字符串
- n : 要拷贝的字符数
7.2 演示示例
#include <stdio.h>
#include <string.h>int main()
{char dest[20];const char *src = "Hello";strncpy(dest, src, 8); // 拷贝前8个字符printf("The copied string is: %s\n", dest);return 0;
}
当源字符串长度小于 n
时,strncpy()
函数将在目标字符串的末尾填充 \0
字符以达到指定的拷贝长度 n
#include <stdio.h>
#include <string.h>int main()
{char dest[6];const char *src = "Hello World";strncpy(dest, src, 5); // 拷贝前5个字符dest[5] = '\0'; // 手动添加末尾的\0字符printf("The copied string is: %s\n", dest);return 0;
}
如果源字符串长度大于等于 n
个字符,strncpy()
函数将会拷贝源字符串的前 n
个字符到目标字符串中,并且不会自动添加末尾的 \0
字符。这种情况下,目标字符串可能不是以 \0
字符结尾,因此需要手动在拷贝后的目标字符串中添加 \0
字符。
7.3 运行结果
8. strnicmp
8.1 函数说明
函数声明 | 函数功能 |
---|---|
int strnicmp(const char *s1, const char *s2, size_t n); | 用于比较两个字符串的前n个字符是否相等,忽略大小写 |
参数:
- s1 : 待比较的第一个字符串
- s2 : 待比较的第二个字符串
- n : 要比较的字符数
返回值:
- 如果
s1
和s2
代表的字符串相等(忽略大小写),则返回0
;- 如果
s1
比s2
小,则返回负数;- 如果
s1
比s2
大,则返回正数。
8.2 演示示例
#include <stdio.h>
#include <string.h>int main()
{const char *s1 = "Hello World";const char *s2 = "heLL!";int result = strnicmp(s1, s2, 4); // 比较前4个字符,忽略大小写if(result == 0) {printf("The first 4 characters are equal (case insensitive).\n");} else if(result < 0) {printf("The first 4 characters of %s are less than %s (case insensitive).\n", s1, s2);} else {printf("The first 4 characters of %s are greater than %s (case insensitive).\n", s1, s2);}return 0;
}
8.3 运行结果
9. strnset
9.1 函数说明
函数声明 | 函数功能 |
---|---|
char *strnset(char *str, int c, size_t n); | 用于将一个字符串的前n个字符都设置为指定的字符 |
参数:
- str: 要进行操作的字符串
- c: 要设置的字符
- n : 要设置的字符数
9.2 演示示例
#include <stdio.h>
#include <string.h>int main() {char str[20] = "Hello World";printf("Before: %s\n", str);strnset(str, '*', 5); // 将前5个字符都设置为*printf("After: %s\n", str);return 0;
}
注意:
strnset()
函数是非标准函数,并不是所有的编译器和操作系统都支持该函数。如果需要跨平台兼容,请使用标准库函数memset()
来实现类似的功能
#include <stdio.h>
#include <string.h>int main()
{char str[20] = "Hello World";printf("Before: %s\n", str);memset(str, '*', 5); // 将前5个字符都设置为*printf("After: %s\n", str);return 0;
}
上述示例使用了标准库函数 memset
来将 str
的前 5
个字符都设置为 *
9.3 运行结果
10. strpbrk
10.1 函数说明
函数声明 | 函数功能 |
---|---|
char *strpbrk(const char *str1, const char *str2); | 用于在一个字符串中查找任意给定字符集合中的字符的第一次出现位置 |
参数:
- str1 : 要进行搜索的字符串
- str2 : 要查找的字符集合
注意: 如果在
str1
中没有找到str2
中的任何字符,则strpbrk
函数返回NULL
指针
10.2 演示示例
#include <stdio.h>
#include <string.h>int main()
{char str[] = "Hello World";char *ptr;ptr = strpbrk(str, "aeiou"); // 查找元音字母if (ptr != NULL) {printf("Found vowel '%c' at position: %lld\n", *ptr, ptr - str + 1);} else {printf("No vowel found.\n");}return 0;
}
10.3 运行结果
11. strrchr
11.1 函数说明
函数声明 | 函数功能 |
---|---|
char *strrchr(const char *str, int character); | 在给定的字符串中查找指定字符的最后一个匹配项 |
参数:
- str : 要进行搜索的字符串
- character : 要查找的字符,其 ASCII 值由整数表示
返回值:
- 如果匹配到,返回匹配字符的地址;
- 如果没有找到匹配项,则返回 NULL。
11.2 演示示例
#include <stdio.h>
#include <string.h>int main ()
{const char str[] = "Hello World!";printf("在 '%s' 中查找字符 'o' 的最后一次出现:\n", str);char *last_o = strrchr(str, 'o');if (last_o) printf("最后一个 'o' 的位置:%lld\n", last_o - str);else printf("未找到匹配的字符。\n");printf("在 '%s' 中查找字符 'w' 的最后一次出现:\n", str);char *last_w = strrchr(str, 'w');if (last_w) printf("最后一个 'w' 的位置:%lld\n", last_w - str);else printf("未找到匹配的字符。\n");return 0;
}
11.3 运行结果
12. strrev
12.1 函数说明
函数声明 | 函数功能 |
---|---|
char *strrev(char *str); | 将给定字符串中的所有字符顺序颠倒,并返回颠倒后的字符串 |
参数:
- str : 要反转的的字符串
注意:因为
strrev()
函数是一个非标准的库函数,许多编译器可能并不支持该函数,所以在使用该函数之前,请确保你的编译器支持它。
12.2 演示示例
#include <stdio.h>
#include <string.h>int main ()
{char str[50];printf("输入一个字符串:");scanf("%s", str);printf("原始字符串:%s\n", str);printf("反转后的字符串:%s\n", strrev(str));return 0;
}
12.3 运行结果
13. strset
13.1 函数说明
函数声明 | 函数功能 |
---|---|
char *strset(char *str, int character); | 用于设置给定字符串中的所有字符为指定的值,并返回修改后的字符串 |
参数:
- str : 要修改的字符串
- character : 要设置的字符,其 ASCII 值由整数表示
13.2 演示示例
#include <stdio.h>
#include <string.h>int main ()
{char str[50];printf("请输入一个字符串:");scanf("%s", str);printf("原始字符串:%s\n", str);printf("将所有字符设置为 'X' 后的字符串:%s\n", strset(str, 'X'));return 0;
}
13.3 运行结果
14. strspn
14.1 函数说明
函数声明 | 函数功能 |
---|---|
size_t strspn(const char *str1, const char *str2); | 计算字符串 str1 中包含在字符串 str2 中的前缀子字符串长度,并返回该长度值 |
参数:
- str1 : 要搜索的字符串
- str2 : 包含要搜索的字符集合的 字符串
14.2 演示示例
#include <stdio.h>
#include <string.h>int main ()
{const char str[] = "Hello World!";const char charset[] = "lHeoWrd";size_t length = strspn(str, charset);printf("在 '%s' 中,最长的前缀子串 '%s' 包含于 '%s' 中。长度为 %zu\n", str, strndup(str, length), charset, length);return 0;
}
上述示例代码运行后,如果出现 error: 'strndup' was not declared in this scope
,说明当前的编译器不支持 strndup()
函数。
因为 strndup()
函数是 C11
新增的函数,因此可能不是所有编译器都支持。
那我们就用如下的方式来替换一下 :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main ()
{const char str[] = "Hello World!";const char charset[] = "lHeoWrd";size_t length = strspn(str, charset);char *substr = (char *)malloc(length + 1);memcpy(substr, str, length);substr[length] = '\0';printf("在 '%s' 中,最长的前缀子串 '%s' 包含于 '%s' 中。长度为 %zu\n", str, substr, charset, length);free(substr);return 0;
}
14.3 运行结果
15. strstr
15.1 函数说明
函数声明 | 函数功能 |
---|---|
char *strstr(const char *str1, const char *str2); | 在字符串 str1 中查找第一个出现的字符串 str2,如果找到了,则返回指向该位置的指针;否则,返回 NULL |
参数:
- str1 : 源字符串
- str2 : 要查找的子字符串
15.2 演示示例
#include <stdio.h>
#include <string.h>int main ()
{const char str[] = "Hello World!";const char substr[] = "World";char *result = strstr(str, substr);if (result) printf("在 '%s' 中找到了子串 '%s'。子串起始位置是 '%s'\n", str, substr, result);else printf("在 '%s' 中未找到子串 '%s'\n", str, substr);return 0;
}
15.3 运行结果
16. strtod
16.1 函数说明
函数声明 | 函数功能 |
---|---|
double strtod(const char *str, char **endptr); | 将字符串 str 转换为一个浮点数(double 类型),并返回该浮点数。如果发生了转换错误,则返回 0.0,并且可以通过 endptr 指针返回指向第一个无法转换的字符的指针。 |
参数:
- str : 要转换为浮点数的字符串
- endptr : 可选参数,用于存储第一个无法转换的字符的指针地址
16.2 演示示例
#include <stdio.h>
#include <stdlib.h>int main ()
{const char str[] = "3.14";// const char str[] = "3.1a4";// const char str[] = "a3.14";char *endptr;double num = strtod(str, &endptr);printf("输入字符串为 '%s'\n", str);printf("转换后的浮点数为 %f\n", num);if (endptr == str) printf("无法进行任何转换。\n");else if (*endptr != '\0') printf("字符串 '%s' 的末尾非法字符是 '%c'\n", str, *endptr);return 0;
}
16.3 运行结果
17. strtok
17.1 函数说明
函数声明 | 函数功能 |
---|---|
char *strtok(char *str, const char *delim); | 用于将一个字符串分割成多个子字符串 |
参数:
- str : 要被分割的 字符串。第一次调用时,应该将其设置为要被分割的字符串的地址;以后的调用中,该参数应该为 NULL
- delim: 分隔符字符集合,用于指定子字符串的分割标准
返回值: 分割后的第一个子字符串,并在每次调用时修改传入的原始字符串 str,使其指向下一个要被分割的子字符串
17.2 演示示例
#include <stdio.h>
#include <string.h>int main ()
{const char str[] = "Hello,World!How are you?";const char delim[] = ", !";char *token;token = strtok((char *)str, delim);while (token != NULL) {printf("%s\n", token);token = strtok(NULL, delim);}return 0;
}
在上述的示例中,
- 我们首先定义了字符串
str
和 字符集合delim
; - 然后使用
strtok()
函数将字符串str
按照字符集合delim
中的分隔符进行分割。每次调用strtok()
函数时,它会返回分割出的第一个子字符串,并且会修改str
指向下一个将要被分割的子字符串。 - 最后我们不断循环调用
strtok()
函数,并输出返回的每个子字符串,直到没有更多的子字符串可以分割为止
17.3 运行结果
18. strtol
18.1 函数说明
函数声明 | 函数功能 |
---|---|
long int strtol(const char *str, char **endptr, int base); | 将字符串 str 转换为一个长整型数(long int 类型) |
参数:
- str : 要被转换为长整型数的字符串
- endptr : 可选参数,用于存储第一个无法转换的字符的指针地址
- base: 转换的进制数,必须是
2
到36
之间的有效数字或者0
。为0
表示采用默认的进制数,即可以解释成合法的整数的最大进制数(一般是10
)
返回值:
- 如果成功转换,返回一个长整型数;
- 如果发生了转换错误,则返回
0
,并且可以通过endptr
指针返回指向第一个无法转换的字符的指针。
18.2 演示示例
#include <stdio.h>
#include <stdlib.h>int main ()
{const char str[] = "101011";// const char str[] = "10101a1";// const char str[] = "a101011";char *endptr;long int num = strtol(str, &endptr, 2);printf("输入字符串为 '%s'\n", str);printf("转换后的十进制数为 %ld\n", num);if (endptr == str) printf("无法进行任何转换。\n");else if (*endptr != '\0') printf("字符串 '%s' 的末尾非法字符是 '%c'\n", str, *endptr);return 0;
}
18.3 运行结果
19. strupr
19.1 函数说明
函数声明 | 函数功能 |
---|---|
char *strupr(char *str); | 将字符串 str 中的所有小写字母转换为大写字母,并返回指向该字符串的指针 |
参数:
- str : 要进行大小写转换的字符串
19.2 演示示例
#include <stdio.h>
#include <string.h>int main ()
{char str[] = "Hello, World!";printf("原始字符串为 '%s'\n", str);strupr(str);printf("转换后的字符串为 '%s'\n", str);return 0;
}
19.3 运行结果
20. swab
20.1 函数说明
函数声明 | 函数功能 |
---|---|
void swab(const void *src, void *dest, ssize_t nbytes); | 将源缓冲区中的每两个相邻字节进行互换,然后将结果存储到目标缓冲区中 |
参数:
- str : 源缓冲区的指针
- dest : 目标缓冲区的指针
- nbytes : 需要交换的字节数
20.2 演示示例
#include <stdio.h>
#include <string.h>
#include <unistd.h>int main ()
{char src[] = "Hello, World!";char dest[15];printf("原始字符串为 '%s'\n", src);swab(src, dest, strlen(src));printf("转换后的字符串为 '%s'\n", dest);return 0;
}
上面示例中,我在一开始演示时,因为没有加上 #include <unistd.h>
这个头文件,导致出现如下错误:
20.3 运行结果
21. system
21.1 函数说明
函数声明 | 函数功能 |
---|---|
int system(const char *command); | 执行一个 shell 或 cmd 命令,并等待命令的完成 |
参数:
- command : 要执行的
shell
或cmd
命令。
21.2 演示示例
下面演示 执行 ls -l
的 shell
命令,笔者是在 windows
环境下运行,故会出错,详见运行结果那里
#include <stdio.h>
#include <stdlib.h>int main ()
{const char command[] = "ls -l";printf("执行命令: '%s'\n", command);int status = system(command);if (status != 0) printf("执行出错!\n");return 0;
}
再来看下,演示使用 dir
命令,在 windows
下可以输出当前目录下的所有文件和子目录
#include <stdlib.h>int main ()
{const char command[] = "dir";system(command);return 0;
}
21.3 运行结果
相关文章:
C语言函数大全-- s 开头的函数(4)
C语言函数大全 本篇介绍C语言函数大全-- s 开头的函数(4) 1. strdup 1.1 函数说明 函数声明函数功能char * strdup(const char *s);用于将一个以 NULL 结尾的字符串复制到新分配的内存空间中 注意: strdup() 函数返回指向新分配的内存空间…...
Linux常见指令 (2)
Linux常见指令 ⑵ 补充man描述:用法:例子 echo描述:用法:例子 echo 字符串例子 echo 字符串 > 文件例子 追加重定向(>>)例子 输出重定向(>)来创建文件 && (>)来清空文件 cat描述:用法:例子 cat && cat 文件补充:例子 cat 文件 && cat &…...
shell脚本4
字符串变量 格式介绍:单引号 varabc 双引号 var"abc" 不使用引号 varabc 区别:单引号,原样输出,不会解析里面的变量 双引号,会解析变量,并且可以使用子双引号,需要转…...
递归思路讲解
最近刷到了树这一模块的算法题,树相关的算法题几乎都是用递归来实现的,但递归的思路却有点抽象,每次遇到递归,都是通过递归来深度或广度地遍历树,但对于递归遍历树的遍历路线,却有点抽象难懂,不…...
基于R语言APSIM模型高级应用及批量模拟
目录 专题一 APSIM模型应用与R语言数据清洗 专题二 APSIM气象文件准备与R语言融合应用 专题三 APSIM模型的物候发育和光合生产模块 专题四 APSIM物质分配与产量模拟 专题五 APSIM土壤水平衡模块 专题六 APSIM土壤碳、氮平衡模块 专题七 APSIM农田管理模块与情景模拟 专…...
Hyperf中的其它事项
Hyperf中的其它事项 关于 Hyperf 其它的内容我们就不多说了,毕竟框架这东西用得多了自然也就熟悉了。最重要的是——我的水平还不足以去深入地分析这个框架! 好吧,其它的功能大家可以去官方文档详细了解,毕竟国人自己做的框架&a…...
【技术选型】Elasticsearch 和Solr那个香?
我们为什么在这里?我存在的目的是什么?我应该运动还是休息并节省能量?早起上班或晚起并整夜工作?我应该将炸薯条和番茄酱或蛋黄酱一起吃吗? 这些都是古老的问题,可能有也可能没有答案。其中一些是非常困难或…...
4面美团测试工程师,因为这个小细节,直接让我前功尽弃.....
说一下我面试别人时候的思路 反过来理解,就是面试时候应该注意哪些东西;用加粗部分标注了 一般面试分为这么几个部分: 一、自我介绍 这部分一般人喜欢讲很多,其实没必要。大约5分钟内说清楚自己的职业经历,自己的核…...
数据恢复软件EasyRecovery16下载安装步骤教程
EasyRecovery16是一款专业好用的数据恢复软件,软件提供了向导式的操作向导,可以有效地恢复电脑或者移动存储设备中丢失的各种文件,包括删除的文件、格式化丢失的文件和清空回收站的数据!千呼万唤始出来,大家期盼许久的EasyRecover…...
Springboot 自定义缓存配置 CacheManager 及redis集成
目录 前言 集成 maven依赖 CacheManagerConfig配置 redis配置 使用 Springboot 集成使用缓存 Cacheable CacheEvict 前言 现有项目中经常遇到的缓存集成问题,Springboot提供了统一的接口抽象与缓存管理器,可集成多种缓存类型,如 Co…...
JS 中七个改变原数组的方法
目录 一、push 二、pop 三、unshift 四、shift 五、splice 六、sort 七、reverse 一、push 在数组的尾部添加元素,并返回新的长度。 let arr [1] arr.push(2) console.log(arr) // [1, 2] 二、pop 删除数组最后面一个元素、并返回删除的元素。 let arr [1, …...
【笔试强训选择题】Day7.习题(错题)解析
作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录…...
Vue电商项目--axios二次封装
postman测试接口 刚刚经过postman工具测试,发现接口果然发生了改变。 新的接口为http://gmall-h5-api.atguigu.cn 如果服务器返回的数据code字段200,代表服务器返回数据成功 整个项目,接口前缀都有/api字样 axios二次封装 XmlHttpRequ…...
人生四维度
人生四维度 不是有钱了就成功,你知道;人生的成功不止一种,你也知道。但成功还有哪种?你知道吗? 如果把人生的体验展开,我们可以得到四个维度,高度、深度、宽度和温度。 财富、权力、影响力 构…...
Python 调用 MessageBeep 播放系统音效
Python 调用 MessageBeep 播放 Windows 系统提示声音 Windows API 函数 "MessageBeep" 介绍 "Windows API MessageBeep"是一个用于发出系统提示音效的函数。它可以向用户发出一种预定义的声音,以指示事件的发生或某个条件的满足。例如…...
废物,我TMD一个985却斗不过专科生(大厂自动化测试2年被裁)
前言 看到标题,可能很多读者朋友恐怕又要骂我了,985这个特殊的字眼也确实异常晃眼,实际上现在985,211也越来越多,它能代表你能够进入到更高的平台,拿到“高级工厂”的入场券,但并不意味着你会成…...
p70 内网安全-域横向内网漫游 Socks 代理隧道技术(NPS、FRP、CFS 三层内网漫游)
数据来源 本文仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。 必要基础知识点: 内外网简单知识内网 1 和内网 2 通信问题正向反向协议通…...
第三十二章 Unity Mecanim动画系统(上)
在上一章节中,我们介绍了Unity的旧版动画系统,本章节来介绍新版的Mecanim动画系统。新版的Mecanim动画系统实际是对旧版动画系统的升级。新版的Mecanim动画系统仍然是建立在动画片段的基础上的,只不过它给我们提供了一个可视化的窗口来编辑动…...
第二章 集合
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…...
这一篇Databinding应该可以帮助迅速上手吧
Databinding使用篇(迅速上手) 使用前需要在模块级别的build.gradle里面的android闭包里添加: dataBinding{enabled true}接着在layout文件中按下Alt 回车, 将布局转换成data binding layout即可,此时编译就会生成对…...
【PHP在线定制商城网站源码V3.0】开源的DIY在线定制商城系统+在线礼品定制
源码下载:https://download.csdn.net/download/m0_66047725/87637177 PHP在线定制商城网站源码,免费开源、免费下载。本商城基于mycncart开发。安装成功后即可浏览,你可以在后台->安装扩展功能上传安装插件,在代码调整中点击刷…...
cout源码浅析
目录 cout源码浅析 那么对于没有定义在这之中的要怎么办呢? 实际使用 结语 首先来看我从cplusplus中截取的这张图: 注意最下面这一行字。cout其实是ostream的一个标准对象object。而上面则演示了一些继承关系。 好的,理解了之后…...
发送Ajax get请求详解
发送AJAX get请求,前端代码: <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>ajax get请求</title> </head> <body> <script type"text/java…...
SQL语句
创建及删除数据库和表 CREATE DATABASE 数据库名; CREATE DATABASE school; 创建新的表 CREATE TABLE 表名(字段1 数据类型,字段2 数据类型[,...] [,PRIMARY KEY (主键名)]); #主键一般选择能代表唯一性的字段,不允许取空值(NULL),值也不允许重复&…...
Mysql 学习(八)单表查询方法二
复杂查询 上一节说了5种访问类型的查询,这一节就来说说关于这些比较复杂的查询 情况一:多个二级索引查询 sql:SELECT * FROM index_value_table WHERE value1 abc AND value2 > 1000;搜索条件: value1 等于 abcvalue2 大于…...
安卓系统下的截屏和录屏
可以抓取手机屏幕画面(屏幕截图),也可以录制屏幕画面视频。拍摄屏幕后,可以查看、编辑和分享所拍的图片或视频。 抓取屏幕截图 打开要抓取的屏幕。视手机情况执行下列一个操作,3种方法看你手机有效的: 同…...
行为型模式-中介者模式
中介者模式 概述 一般来说,同事类之间的关系是比较复杂的,多个同事类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,这是一种过度耦合的架构,即不利于类的复用,也不稳定。例如在下左图中…...
辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-功能ODD定义
1.系统定义 智能驾驶系统包含行车场景功能和泊车场景功能,行车场景功能包括安全ADAS功能、基础ADAS功能和高阶ADAS功能三大类,本文档定义高阶ADAS功能中的导航辅助驾驶功能用例。 1.1.高阶ADAS功能列表 功能需求ID 功能分类 功能名称...
PMP/高项 06-项目成本管理
项目成本管理 概念 项目成本管理 项目成本管理又被称为项目造价管理,是有关项目成本和项目价值两个方面的管理,是为保障以最小的成本实现最大的项目价值而开展的项目专项管理工作。 确保在批准的项目预算内完成项目 成本管理内容 规划成本管理 制定项目…...
XXL-JOB中间件【实现分布式任务调度】
目录 1:XXL-JOB介绍 2:搭建XXL-JOB 2.1:调度中心 2.2:执行器 2.3:执行任务 3:分片广播 1:XXL-JOB介绍 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学…...
南阳网站排名价格/最近的电脑培训学校
1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展。2. Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,serverlet&#…...
泰安网站制作/常见的营销手段
http://edu.csdn.net/course/detail/2798?locationNum13&fps1...
手机做印章网站/上海网站制作推广
public class EqualTest {public static void main(String[] args) {//对于基本类型的变量。""和"equal"的区别int t157;int t267;int t3124;int t4124;//“”对于基本数据类型,判断两个变量的值是否相等。Boolean result1(t1t2);Boolean resul…...
沈阳网站搜索引擎优化/凡科建站的优势
橡胶密封圈是由一个或几个零件组成的环形罩,固定在轴承的一个套圈或垫圈上并与另一套圈或垫圈接触或形成窄的迷宫间隙,防止润滑油漏出及外物侵入。一、按类状分1.O型密封圈系列拥有氟橡胶,丁晴胶,硅胶、乙丙橡胶、双氟橡胶等多种材…...
网站地图怎么做的/建站之星官方网站
给空格子上下左右的互换操作,问最后是怎样的 注意一行的最后一个若是空格,需要自己加注意读取时 操作可能分好多行,一定要读取到 0 为止 1 #include <iostream>2 #include <cstring>3 using namespace std;4 char map[50][50],o…...
莆田有交做外贸网站的没/北京seo优化厂家
POSTGRESQL手册描述该特性:在处理查询期间,前端可能会请求取消查询。出于执行效率的原因,取消请求不会在打开的连接上直接发送到后端:我们不希望后端在查询处理期间不断检查来自前端的新输入。取消请求应该相对不频繁,…...