关于一些C的函数
一、内存分配
1、memset
void *memset (void *s, int ch, size_t n);
将s所指向内存的前n个字节用ch替换,返回s。
用途:(1)为新申请的内存初始化 (2)对结构体或数组清零操作最快的方法
2、memcpy
void *memcpy (void *dest, const void *src, size_t n);
从src所指的内存地址的起始位置开始拷贝n个字节到dest所指内存地址的起始位置
返回:指向dest的指针
3、malloc
extern void *malloc (unsigned int num_bytes);
分配长度为num_bytes字节的内存块
返回:成功 被分配内存的指针
失败 NULL
char *p=(char *)malloc(sizeof(char));
calloc
char *str=(char *)malloc(sizeof(char)*100);
比malloc多了初始化操作
memset(str,0,size);
4、realloc
extern void *realloc (void *mem_address, unsigned int newsize);
先判断mem_addresss是否有足够的连续空间,有则扩大地址,返回mem_address
空间不够,按照newsize重新分配空间,拷贝内容到新分配内存,释放原来mem_address
失败返回NULL
5、free
void free (void *ptr);
本质:切断指针ptr与内存块的联系
(1)与malloc()配对使用,如果是malloc或者calloc意思是申请一片内存,这个指针指向这个被申请的内存地址。
(2)如果ptr是NULL,free操作不会出问题;如果ptr不是NULL,连续两次free会报错
(3)定义指针,不申请内存。赋值是将变量的地址赋给指针的,变量是已经存在的
二、文件操作
1、fgets
char *fgets (char *buf, int bufsize, FILE * stream);
从文件结构体指针stream中读取数据,每次读取一行,保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(‘\0’)或者读到换行。成功返回buf,失败返回NULL。
2、feof
int feof (FILE *stream)
检测流上的文件结束符,如果文件结束,返回非0;文件未结束,返回0。
3、fseek
4、fopen
5、fclose
三、字符串操作
1、strlen
extern unsigned int strlen (char *s)
计算字符串s的长度,不包括'\0',返回长度
2、strstr
extern char *strstr (const char *str1, const char *str2);
str1:被查找目标
str2:要查找的对象
返回:str2第一次在str1中的位置,没有找到,返回NULL
3、strcmp
extern int strcmp(const char *s1, const char *s2);
比较字符串s1和s2,两个字符串自左向右逐个字符相比,直到出现不同的字符或遇到'\0'
返回:s1<s2 返回负数
s1=s2 返回0
s1>s2 返回正数
4、strncmp
int strncmp (const char *str1, const char *str2, size_t size);
类似strcmp,不同:指定比较size个字符
返回:相等 0
不等 str1[n]-str2[n]
5、strchr
extern char *strchr (const char *s, char c)
查找字符串s中首次出现c的位置
返回:首次出现c位置的指针,s中不存在c返回NULL
6、sprintf
int sprintf (char *buffer, const char *format, [argument]...)
把格式化的数据写入某个字符串缓冲区。
buffer:指向将要写入的字符串的缓冲区
format:格式化字符串
[argument]:可选参数
返回字符串的长度
7、strcpy
extern char *strcpy (char *dest, const char *src);
把从src地址开始且含有NULL结束符的字符串复制到dest开始的地址空间
内存区域不能重叠、dest有足够空间
返回dest指针
8、strncpy
char *strncpy (char *dest, char *src, size_t num);
复制多少由num决定
返回指向dest指针
num > dest串长度 占空间溢出崩溃
建议将n置为dest串长度
9、strcat
extern char *strcat (char *dest, char *src);
把src所指字符串添加到dest结尾处,并添加'\0'
10、StrUpper
StrUpper(ptr);
返回指针字符串ptr的大写形式

浙公网安备 33010602011771号