C/C++函数

系统调用函数 - system

功能:在已经运行的程序中执行另外一个外部程序
参数:外部可执行程序名字
返回值:
        成功:不同系统返回值不一样
        失败:通常是-1

sizeof关键字

sizeof 不是函数,所以不需要包含任何头文件,它的功能是计算一个数据类型的大小,单位为字节
sizeof 的返回值为 size_t
size_t 类型在 32 位操作系统下是 unsigned int,是一个无符号的整数
输出和输入
输出字符的两种方式:
        1. printf(“%c”,变量)
        2. putchar(字符)
输入字符的两种方式:
        1. scanf(“%c”,&b 变量)
        2. getchar(字符) 

time 

 
功能:获取当前系统时间
参数:常设置为 NULL
返回值:当前系统时间,time_t 相当于 long 类型,单位为毫秒

srand

 
功能:用来设置 rand()产生随机数时的随机种子
参数:如果每次 seed 相等,rand()产生随机数相等
返回值:无

rand

 
功能:返回一个随机数值
参数:无
返回值:随机数
要获得固定范围的数就 % 一个数值 
例:rand() %100就是 0-99 的随机数,rand() % 11+50 就是 50-60 的随机数

示例:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 
int main()
{
    time_t tm = time(NULL);//得到系统时间
    srand((unsigned int)tm);//随机种子只需要设置一次即可
    
    int r = rand();
    printf("r = %d
", r);
    return 0;
}
获取随机数

字符串处理函数

1. gets()

功能:从标准设备上获取一个字符串,这个字符串可以带空格,直接接收到换行字符或者字符串结束标志才停止。 不安全
参数:
        s:字符指针
返回值:
  • 成功:读入的字符串
  • 失败:NULL
 
gets(str)与scanf("%s",str)的区别:
  • gets(str)允许输入的字符串含有空格
  • scanf("%s",str)不允许含有空格

注意:由于 scanf() 和 gets() 无法知道字符串s大小,必须遇到换行符或读到文件结尾为止才接收输入,因此容易导致字符数组越界(缓冲区溢出)的情况。

示例:

2. puts()

功能:从标准设备上输出一个字符串,在输出完成后自动输出一个' ' 换行。

参数:

  s:字符指针

返回值:

  • 成功:非负数
  • 失败:-1

示例:

  

3. fget()

功能:接收固定大小的字符串,stream指定的文件内读入字符,保存到s所指定的内存空间,直到出现换行字符、读到文件结尾或是已读了size - 1个字符为止,最后会自动加上字符 '' 作为字符串结束。安全

参数

  • s:字符指针
  • size:指定最大读取字符串的长度(size - 1)
  • stream:流,如果读键盘输入的字符串,固定写为stdin

返回值

  • 成功:成功读取的字符串
  • 读到文件尾或出错: NULL

注意:

  1. 如果接收少于大小,会将 加入到字符串中
  2. 如果接收大于等于大小,不会将 加入到字符串中,始终会将 加入到字符串中

fgets() 在读取一个用户通过键盘输入的字符串的时候,同时把用户输入的回车也做为字符串的一部分。通过 scanf 和 gets 输入一个字符串的时候,不包含结尾的“ ”,但通过 fgets 结尾多了“ ”fgets()函数是安全的,不存在缓冲区溢出的问题。

 示例:

4. fputs()

功能:str所指定的字符串写入到stream指定的文件中 字符串结束符 ''  不写入文件。

参数:

  • s:字符指针
  • stream:流如果字符串输出到屏幕,固定写为stdout

返回值:

  • 成功:0
  • 失败:-1

fputs()是puts()的文件操作版本,但 fputs() 不会自动输出一个' '

示例:

5. strlen() - 计算字符串长度

功能:计算目标字符串的长度,不包含字符串结束符‘’

参数s:字符指针

返回值字符串s的长度,size_t 为 unsigned int 类型

示例:

6. strcpy() - 拷贝

功能:把src所指向的字符串复制到dest所指向的空间中,''也会拷贝过去

参数

  • dest:目标字符串
  • src:源字符串

返回值

  • 成功:返回目标字符串的首地址
  • 失败:NULL

注意如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况。

示例:

7. strncpy() - 有限拷贝

功能:把src指向字符串的前n个字符复制到dest所指向的空间中,是否拷贝结束符看指定的长度是否包含''

参数

  • dest:目标字符串首地址
  • src:源字符串首地址
  • n:指定需要拷贝字符串长度

返回值

  • 成功:返回dest字符串的首地址
  • 失败:NULL

注意:有限拷贝不会将 拷贝到目标字符串中

示例:

8. strcat() - 追加

功能:将src字符串连接到dest的尾部,‘’也会追加过去

参数

  • dest:目的字符串首地址
  • src:源字符首地址

返回值

  • 成功:返回dest字符串的首地址
  • 失败:NULL

示例:

9. strncat() - 有限追加

功能:将src字符串前n个字符连接到dest的尾部,‘’也会追加过去

参数

  • dest:目的字符串首地址
  • src:源字符首地址
  • n:指定需要追加字符串个数

返回值

  • 成功:返回dest字符串的首地址
  • 失败:NULL

示例:

10. strcmp() - 比较

功能:比较 s1  s2 的大小比较的是字符ASCII码大小。比较 之前的所有有效字符

参数

  • s1:字符串1首地址
  • s2:字符串2首地址

返回值

  • 相等:0
  • 大于:>0,在不同操作系统中 strcmp 结果会不同,有的返回ASCII 码差值
  • 小于:<0

示例:

11. strncmp() - 有限比较

功能:比较 s1  s2 n个字符的大小比较的是字符ASCII码大小

参数

  • s1:字符串1首地址
  • s2:字符串2首地址
  • n:指定比较字符串的数量

返回值

  • 相等:0
  • 大于:> 0
  • 小于:< 0

示例:

12. printf()

功能:格式化输出,直到出现字符串结束符 ''  为止。

参数:

  • str:字符指针
  • format:字符串格式

返回值:

  • 成功:实际格式化的字符个数
  • 失败: - 1

示例:

13. scanf()

功能:从str指定的字符串读取数据,并根据参数format字符串来转换并格式化数据。

参数:

  • str:指定的字符串首地址
  • format:字符串格式

返回值:

  • 成功:参数数目,成功转换的值的个数
  • 失败: - 1

示例:

14. sprintf() - 字符串格式化

功能:根据参数format字符串来转换并格式化数据,然后将结果输出到str指定的空间中,直到出现字符串结束符 ''  为止。

参数

  • str:字符指针
  • format:字符串格式,用法和printf()一样

返回值

  • 成功:实际格式化的字符个数
  • 失败: - 1

示例:

15. sscanf()

功能:从str指定的字符串读取数据,并根据参数format字符串来转换并格式化数据。

参数

  • str:指定的字符串首地址
  • format:字符串格式,用法和scanf()一样

返回值

  • 成功:参数数目,成功转换的值的个数
  • 失败: - 1

 示例:

16. strchr()

功能:在字符串s中查找字母c出现的位置

参数

  • s:字符串首地址
  • c:匹配字母(字符)

返回值

  • 成功:返回第一次出现的c地址
  • 失败:NULL

示例:

17. strstr()

功能:在字符串haystack中查找字符串needle出现的位置

参数

  • haystack:源字符串首地址
  • needle:匹配字符串首地址

返回值

  • 成功:返回第一次出现的needle地址
  • 失败:NULL

示例:

18. strtok() - 字符串切割

功能:来将字符串分割成一个个片段。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时, 则会将该字符改为 字符,当连续出现多个时只替换第一个为。

参数

  • str:指向欲分割的字符串
  • delim:为分割字符串中包含的所有字符

返回值

  • 成功:分割后字符串首地址
  • 失败:NULL

  在第一次调用时:strtok() 必需给予参数s字符串

  往后的调用则将参数s设置成NULL,每次调用成功则返回指向被分割出片段的指针

示例:

19. atoi() - 字符串转换

功能atoi()会扫描nptr字符串,跳过前面的空格字符,直到遇到数字或正负号才开始做转换,而遇到非数字或字符串结束符('')才结束转换,并将结果返回返回值。

参数nptr:待转换的字符串

返回值:成功转换后整数

类似的函数有:

  • atof():把一个小数形式的字符串转化为一个浮点数。
  • atol():将一个字符串转化为long类型

示例:

内存操作函数

1、memset

功能:将s的内存区域的前n个字节以参数c填入

参数

  • s:需要操作内存s的首地址
  • c:填充的字符,c虽然参数为int,但必须是unsigned char , 范围为0~255
  • n:指定需要设置的大小

返回值s的首地址

示例:

2、memcpy

功能:拷贝src所指的内存内容的前n个字节到dest所值的内存地址上。

参数

  • dest:目的内存首地址
  • src:源内存首地址,注意:dest和src所指的内存空间不可重叠
  • n:需要拷贝的字节数

返回值dest的首地址

示例:

strcpy 与 memcpy 的区别:

  1. 函数参数不同
  2. strcpy 只能拷贝字符串,memcpy 可以拷贝一块内存
  3. 拷贝结束标志不同。strcpy 是以''为结尾,memcpy 是以 n 的个数为结尾。这两个都是不安全的

3、memmove

功能:拷贝src所指的内存内容的前n个字节到dest所值的内存地址上。

参数:

  • dest:目的内存首地址
  • src:源内存首地址,注意:dest和src所指的内存空间不可重叠
  • n:需要拷贝的字节数

返回值:dest的首地址

memmove()功能用法和memcpy()一样,区别在于:dest和src所指的内存空间重叠时,memmove()仍然能处理,不过执行效率比memcpy()低些。

memmove()拷贝重叠内存地址不会出现问题,但是效率比较低。如果拷贝源和拷贝目标没有重叠,两个函数效率一样

4、memcmp

功能:比较s1和s2所指向内存区域的前n个字节

参数

  • s1:内存首地址1
  • s2:内存首地址2
  • n:需比较的前n个字节

返回值

  • 相等:=0
  • 大于:>0
  • 小于:<0

示例:

堆区内存分配和释放

malloc

功能:在内存的动态存储区(堆区)中分配一块长度为size字节的连续区域,用来存放类型说明符指定的类型。分配的内存空间内容不确定,一般使用memset初始化。

参数

  • size:需要分配内存大小(单位:字节)

返回值

  • 成功:分配空间的起始地址
  • 失败:NULL

示例:

free

功能:释放ptr所指向的一块内存空间,ptr是一个任意类型的指针变量,指向被释放区域的首地址。对同一内存空间多次释放会出错。

参数

  • ptr:需要释放空间的首地址,被释放区应是由malloc函数所分配的区域。

返回值:无

原文地址:https://www.cnblogs.com/zhaye/p/11169842.html