sprintf
包含在头文件中
int sprintf(char str, const char format, ...),将可变参数(...)按照format格式化成字符串,并将字符串复制到str中。
如果成功,则返回写入的字符总数,不包括字符串追加在字符末尾的空字符串。如果失败,则返回一个负数。
举例:
1 #include
2
3 int main()
4 {
5 char str【80】;
6 float Pi = 3.14;
7
8 sprintf(str, "Pi 的值 = %f", Pi);
9
10 return 0;
11 }
运行以上程序,最终str = "Pi 的值 = 3.14"
snprintf
包含在头文件中
int snprintf(char str, size_t size, const char format, ...),将可变参数(...)按照format格式化成字符串,并将字符串复制到str中,size为要写入的字符的最大数目,超过size会被截断。
如果格式化后的字符串长度小于size,则会把字符串全部复制到str中,并给其后添加一个字符串结束符'\0'。
如果格式化后的字符串长度大于等于size,则超过size的部分会被截断,只讲其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符'\0',返回值为欲写入的字符串长度。
举例:
1 #include
2
3 int main()
4 {
5 char buffer【50】;
6 char s = "runoobcom";
7
8 // 读取字符串并存储在 buffer 中
9 int j = snprintf(buffer, 6, "%s\n", s);
10
11 // 输出 buffer及字符数
12 printf("string:\n%s\ncharacter //代码效果参考:http://hnjlyzjd.com/hw/wz_24986.html
count = %d\n", buffer, j);13
14 return 0;
15 }
输出结果为:
string:
runoo
character count = 10
strlen
包含在头文件中
size_t strlen(const char str),计算字符串str的长度,直到空结束字符,但不包括空结束字符。
该函数返回字符串str的长度。
举例:
1 #include
2 #include [span style="color: rgba(0, 0, 255, 1)">string.h>
3
4 int main()
5 {
6 char str【50】;
7 int len;
8
9 strcpy(str, "Hello World!");
10
11 len = strlen(str);
12 }
变量len中的值为12。
sizeof
sizeof其实不是c语言里面的标准函数,而是一种运算符,用来反应变量的占用内存字节大小。
举例:
1 #include
2
3 int main()
4 {
5 short a = 8;
6 float b = 11.5f;
7 char c = 45;
8
9 int size_a = sizeof(a);
10 int size_b = sizeof(b);
11 int size_c = sizeof(c);
12
13 printf("a大小为%d个字节\r\n", size_a);
14 printf("b大小为%d个字节\r\n", size_b);
15 printf("c大小为%d个字节\r\n", size_c);
16 }
//代码效果参考:http://hnjlyzjd.com/hw/wz_24984.html输出的结果为:
a大小为2个字节
b大小为4个字节
c大小为1个字节
因为在c语言中8位为1个字节,short类型为16位2字节,float类型位32位4字节,char类型为8位1字节。
strcpy
包含在头文件中
char strcpy(char dest, const char src),把src所指向的字符串复制到dest中,需要注意的是如果目标数组dest不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。
该函数返回一个指向最终的目标字符串dest的指针。
举例:
1 #include
2 #include [span style="color: rgba(0, 0, 255, 1)">string.h>
3
4 int main()
5 {
6 char src【50】;
7 char dest【100】;
8
9 strcpy_s(src, "Hello World!");
10 strcpy_s(dest, src);
11
12 printf("dest为%s", dest);
13 }
输出结果为:
dest为Hello World!
memcpy
包含在头文件中
void memcpy(void str1, const void str2, size_t n),从存储区str2复制n个字节到存储区str1。
举例:
1 #include
2 #include [span style="color: rgba(0, 0, 255, 1)">string.h>
3
4 int main()
5 {
6
7 char src【】 = "Hello World!";
8 char dest【50】;
9
10 memcpy(dest, src, strlen(src)+1);
11
12 printf("dest中的字符串为:%s\n", dest);
13 }
输出结果为:
dest中的字符串为:Hello World!
注意:char类型数组的字节数即为数组的长度+空结束字符。
举例:
1 #include
2 #include [span style="color: rgba(0, 0, 255, 1)">string.h>
3
4 int main()
5 {
6 char src【】 = "Hello World!";
7 char dest【50】;
8
9 memcpy(dest, src+4, strlen(src)-4);
10
11 //加上字符串结束符'\0'
12 dest【strlen(src) - 4】 = '\0';
13
14 printf("dest中的字符串为:%s\n", dest);
15 }
输出结果为:
dest中的字符串为:o World!
注意:如果字符串的结尾没有结束符'\0',则可能会输出系统初始化的数据。
memcmp
包含在头文件中
int memcmp(const void str1, const void str2, size_t n) 把存储区str1和存储区str2的前n个字节按照ASCII码值自左向右进行比较,直到到比较到第一个不同的位置。
如果返回值 < 0 ,则表示str1小于str2;
如果返回值 > 0 ,则表示str1大于str2;
如果返回值 = 0 ,则表示str1等于str2。
举例:
1 #include
2 #include [span style="color: rgba(0, 0, 255, 1)">string.h>
3
4 int main()
5 {
6 char str1【】 = "Hello World!";
7 char str2【】 = "ESZY";
8 int result;
9
10 //比较str1和str2的前两个字节
11 result = memcmp(str1, str2, 2);
12
13 printf("result:%d", result);
14 }
输出结果为:
result:1
memset
包含在头文件中
void memset(void str, int c, size_t n),复制字符c(一个无符号字符)到参数str所指向的字符串的前n个字符。
举例:
1 #include
2 #include [span style="color: rgba(0, 0, 255, 1)">string.h>
3
4 int main()
5 {
6 char str【100】;
7
8 strcpy_s(str, "Hello World!");
9
10 printf("str:%s\r\n", str);
11
12 memset(str, 65, 4);
13
14 printf("str:%s\r\n", str);
15 }
输出结果为:
str:Hello World!
str:AAAAo World!
举例:
1 #include
2 #include [span style="color: rgba(0, 0, 255, 1)">string.h>
3
4 int main()
5 {
6 char str【10】;
7
8 //初始化字符数组str
9 memset(str, 0, sizeof(str));
10
11 printf("str:%s\r\n", str);
12 }
strcmp
包含在头文件中
int strcmp(const char str1, const char *str2)把str1所指向的字符串和str2所指向的字符串进行比较。
用法同memcmp相同。
如需详细了解请参看菜鸟教程C语言部分