来源:微信公众号「编程学习基地」
string.h:
strncat strcat
//函数名: strncat
//功 能: 附加指定大小字符串的字符
//用 法: char *strncat(char *strDest,const char *strSource,size_t count)
#include<stdio.h>
#include<string.h>
int main()
{
char dest[10] = "hello";
strncat(dest, "add", 2); //dest字符数组末尾追加两个字符
printf("%s\n", dest);
return 0;
}
memchr strchr
memchr有范围限制,可以限制搜索范围
功能都是在数组中搜索字符
//函数名: memchr
//功 能: 在数组的前n个字节中搜索字符
//用 法: void *memchr(void *s, char ch, unsigned n);
#include <string.h>
#include <stdio.h>
int main(void)
{
char str[17];
char *ptr;
strcpy(str, "This is a string");
ptr = memchr(str, 'r', strlen(str));
if (ptr)
printf("The character 'r' is at position: str[%d]= %c\n", ptr - str,str[ptr - str]);
else
printf("The character was not found\n");
return 0;
}
memmove memcpy strcpy
都是将一个缓冲区拷贝到到另一缓冲区
memcpy的速度比memmove快一点,但是memmove安全性更高
//功 能: 拷贝一块内存
#include<stdio.h>
#include<string.h>
int main()
{
char dest[20], src[20] = "hello world!";
//strcpy(dest, src);
//memcpy(dest, src, 20);
memmove(dest, src, 20);
printf("%s\n", dest);
return 0;
}
memset
将缓冲区设置为指定字符
用来初始化一段内存:
//函数名: memset
//功 能: 设置s中的所有字节为ch, s数组的大小由n给定
//用 法: void *memset(void *s, char ch, unsigned n);
#include<stdio.h>
#include<string.h>
int main()
{
int arr[10];
memset(arr, 0, sizeof(arr));
for (int i = 0; i < 10; i++)
{
printf("%d\t", arr[i]);
}
return 0;
}
stdlib.h:
atoi
把字符串转换成长整型数
//函数名: atoi
//功 能: 把字符串转换成长整型数
//用 法: int atoi(const char *nptr);
#include <stdlib.h>
#include <stdio.h>
int main()
{
int n;
char *str = "12345.67";
n = atoi(str); //只能转化为int型整数
printf("string = %s integer = %d\n", str, n); //输出结果为:12345
return 0;
}
itoa
把一整数转换为字符串
//函数名: itoa
//功 能: 把一整数转换为字符串
//用 法: char *itoa(int value, char *string, int radix);
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int number = 12345;
char string[25];
itoa(number, string, 10);
printf("integer = %d string = %s\n", number, string);
return 0;
}
rand
随机数发生器
//函数名: rand
//功 能: 随机数发生器
//用 法: void rand(void);
#include<stdio.h>
#include<stdlib.h>
int main()
{
int src[10];
for (int i = 0; i < 10; i++)
{
src[i] = rand() % 10;
printf("%d\t", src[i]);
}
return 0;
}
srand
初始化随机数发生器
//函数名: srand
//功 能: 初始化随机数发生器
//用 法: void srand(unsigned seed);
#include<stdio.h>
#include<stdlib.h>
int main()
{
srand((unsigned)time(NULL)); //设置随机种子
int src[10];
for (int i = 0; i < 10; i++)
{
src[i] = rand() % 10;
printf("%d\t", src[i]);
}
return 0;
}
有没有设置随机种子,有什么区别呢?
让我们在Linux下测试
#将rand的示例代码写入test并编译运行两次
deroy@ubuntu:~/work$ gcc test.c -o test
deroy@ubuntu:~/work$ ls
test test.c
deroy@ubuntu:~/work$ ./test
3 6 7 5 3 5 6 2 9 1
deroy@ubuntu:~/work$ ./test
3 6 7 5 3 5 6 2 9 1
运行结果显示,多次运行数字不变
#将srand的示例代码写入test_1并编译运行两次
deroy@ubuntu:~/work$ gcc test_1.c -o test_1
deroy@ubuntu:~/work$ ./test_1
0 2 6 6 0 9 6 5 5 4
deroy@ubuntu:~/work$ ./test_1
8 0 7 4 1 2 5 3 3 6
运行结果显示,多次运行数字改变
区别很明显了吧,自己动手试一试,windows下也是同样的结果