C语言中常用的函数-整理

大致分为:
1.常用的字符串处理函数
2.常用的内存操作处理函数
3.文件的标准库函数
4.系统调用函数

常用的字符串处理函数:
 int putchar(int ch);
 /*putchar输出一个char*/
 int getchar(void);
/*getchar是从标准输入设备读取一个char。*/
char *gets(char *s);
/*功能:从标准输入读入字符,并保存到s指定的内存空间,直到出现换行符或读到文件结尾为止。
参数:
    s:字符串首地址
返回值:
    成功:读入的字符串
    失败:NULL
*/  
int puts(const char *string);
/*功能:标准设备输出s字符串,在输出完成后自动输出一个'\n'。
参数:
    s:字符串首地址
返回值:
    成功:非负数
    失败:-1
*/
size_t strlen(const char *s);
/*功能:计算指定指定字符串s的长度,不包含字符串结束符‘\0’
参数:
s:字符串首地址
返回值:字符串s的长度,size_t为unsigned int类型
*/

/*char *strcpy(char *dest, const char *src);
功能:把src所指向的字符串复制到dest所指向的空间中,'\0'也会拷贝过去
参数:
    dest:目的字符串首地址
    src:源字符首地址
返回值:
    成功:返回dest字符串的首地址
    失败:NULL
注意:此函数不是一个安全的函数,因为没有指定copy的大小,可能会造成越界。推荐使用strcpy_s(char *dest,size_t size,const char *src)
*/
int strcmp(const char *s1, const char *s2);
/*功能:比较 s1 和 s2 的大小
参数:
    s1:字符串1首地址
    s2:字符串2首地址
返回值:
    相等:0
    大于:>0
    小于:<0
*/  
char *strcat(char *dest, const char *src);
/*功能:将src字符串连接到dest的尾部,‘\0’也会追加过去
参数:
    dest:目的字符串首地址
    src:源字符首地址
返回值:
    成功:返回dest字符串的首地址
    失败:NULL
*/
char *strstr(const char *haystack, const char *needle);
/*功能:在字符串haystack中查找字符串needle出现的位置
参数:
    haystack:源字符串首地址
    needle:匹配字符串首地址
返回值:
    成功:返回第一次出现的needle地址
*/
char *strtok(char *str, const char *delim);
/*功能:来将字符串分割成一个个片段。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时, 则会将该字符改为\0 字符,当连续出现多个时只替换第一个为\0。
参数:
    str:指向欲分割的字符串
    delim:为分割字符串中包含的所有字符
返回值:
    成功:分割后字符串首地址
    失败:NULL
注意:在第一次调用时:strtok()必需给予参数s字符串
往后的调用则将参数s设置成NULL,每次调用成功则返回指向被分割出片段的指针
*/
char a[100] = "adc*fvcv*ebcy*hghbdfg*casdert";
char *s = strtok(a, "*");//将"*"分割的子串取出
while (s != NULL)
{
    printf("%s\n", s);
    s = strtok(NULL, "*");
}

int sprintf(char *str, const char *format, ...);
/*功能:根据参数format字符串来转换并格式化数据,然后将结果输出到str指定的空间中,直到出现字符串结束符 '\0'  为止。
参数:
    str:字符串首地址
    format:字符串格式,用法和printf()一样
返回值:
    成功:实际格式化的字符个数
    失败: - 1
*/
int sscanf(const char *str, const char *format, ...);
/*功能:从str指定的字符串读取数据,并根据参数format字符串来转换并格式化数据。
参数:
    str:指定的字符串首地址
    format:字符串格式,用法和scanf()一样
返回值:
    成功:实际读取的字符个数
    失败: - 1
*/  
int atoi(const char *nptr);
/*功能:atoi()会扫描nptr字符串,跳过前面的空格字符,直到遇到数字或正负号才开始做转换,而遇到非数字或字符串结束符('\0')才结束转换,并将结果返回返回值。
参数:
    nptr:待转换的字符串
   返回值:成功转换后整数
*/
char*itoa(int value,char*string,int radix);
/*功能:int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等
参数:
    value:需要转换的值
    char *str:字符串首地址
    radix:基数,也就是需要转换的进制数
返回值:函数返回一个指向 str,无错误返回。

*/
常用的内存操作处理函数
void *memset(void *s, int c, size_t n);
/*功能:将s的内存区域的前n个字节以参数c填入
参数:
    s:需要操作内存s的首地址
    c:填充的字符,c虽然参数为int,但必须是unsigned char , 范围为0~255
    n:指定需要设置的大小
返回值:s的首地址
*/
void *memcpy(void *dest, const void *src, size_t n);
/*功能:拷贝src所指的内存内容的前n个字节到dest所值的内存地址上。
参数:
    dest:目的内存首地址
    src:源内存首地址,注意:dest和src所指的内存空间不可重叠
    n:需要拷贝的字节数
返回值:dest的首地址
*/
void *memmove(void *dest, const void *src, size_t n);
/*memmove()功能用法和memcpy()一样,区别在于:dest和src所指的内存空间重叠时,memmove()仍然能处理,不过执行效率比memcpy()低些。*/
int memcmp(const void *s1, const void *s2, size_t n);
/*功能:比较s1和s2所指向内存区域的前n个字节
参数:
    s1:内存首地址1
    s2:内存首地址2
    n:需比较的前n个字节
返回值:
    相等:=0
    大于:>0
    小于:<0
*/
void *malloc(size_t size);
/*功能:在内存的动态存储区(堆区)中分配一块长度为size字节的连续区域,用来存放类型说明符指定的类型。分配的内存空间内容不确定,一般使用memset初始化。
参数:
    size:需要分配内存大小(单位:字节)
返回值:
成功:分配空间的起始地址
失败:NULL
注意:对应的还有,void *calloc(size_t n, size_t size);
void *realloc(void *mem_address, unsigned int newsize);
*/
void free(void *ptr);
/*功能:释放ptr所指向的一块内存空间,ptr是一个任意类型的指针变量,指向被释放区域的首地址。对同一内存空间多次释放会出错。
参数:
ptr:需要释放空间的首地址,被释放区应是由malloc函数所分配的区域。
返回值:无
*/
文件的标准库函数
int fputc(int ch, FILE * stream);
/*功能:将ch转换为unsigned char后写入stream指定的文件中
参数:
    ch:需要写入文件的字符
    stream:文件指针
返回值:
    成功:成功写入文件的字符
    失败:返回-1
*/
int fgetc(FILE * stream);
/*功能:从stream指定的文件中读取一个字符
参数:
    stream:文件指针
返回值:
    成功:返回读取到的字符
    失败:-1
*/
int feof(FILE * stream);
/*功能:检测是否读取到了文件结尾。判断的是最后一次“读操作的内容”,不是当前位置内容(上一个内容)。
参数:
    stream:文件指针
返回值:
    非0值:已经到文件结尾
    0:没有到文件结尾
*/
int fputs(const char * str, FILE * stream);
/*功能:将str所指定的字符串写入到stream指定的文件中,字符串结束符 '\0'  不写入文件。 
参数:
    str:字符串
    stream:文件指针
返回值:
    成功:0
    失败:-1
*/
char * fgets(char * str, int size, FILE * stream);
/*功能:从stream指定的文件内读入字符,保存到str所指定的内存空间,直到出现换行字符、读到文件结尾或是已读了size - 1个字符为止,最后会自动加上字符 '\0' 作为字符串结束。
参数:
    str:字符串
    size:指定最大读取字符串的长度(size - 1)
    stream:文件指针
返回值:
    成功:成功读取的字符串
    读到文件尾或出错: NULL
*/
int fprintf(FILE * stream, const char * format, ...);
/*功能:根据参数format字符串来转换并格式化数据,然后将结果输出到stream指定的文件中,指定出现字符串结束符 '\0'  为止。
参数:
    stream:已经打开的文件
    format:字符串格式,用法和printf()一样
返回值:
    成功:实际写入文件的字符个数
    失败:-1
*/
int fprintf(FILE * stream, const char * format, ...);
/*功能:根据参数format字符串来转换并格式化数据,然后将结果输出到stream指定的文件中,指定出现字符串结束符 '\0'  为止。
参数:
    stream:已经打开的文件
    format:字符串格式,用法和printf()一样
返回值:
    成功:实际写入文件的字符个数
    失败:-1
*/
int fseek(FILE *stream, long offset, int whence);
/*功能:移动文件流(文件光标)的读写位置。
参数:
    stream:已经打开的文件指针
    offset:根据whence来移动的位移数(偏移量),可以是正数,也可以负数,如果正数,则相对于whence往右移动,如果是负数,则相对于whence往左移动。如果向前移动的字节数超过了文件开头则出错返回,如果向后移动的字节数超过了 文件末尾,再次写入时将增大文件尺寸。
    whence:其取值如下:
        SEEK_SET:从文件开头移动offset个字节
        SEEK_CUR:从当前位置移动offset个字节
        SEEK_END:从文件末尾移动offset个字节
返回值:
    成功:0
    失败:-1
    */
long ftell(FILE *stream);
/*功能:获取文件流(文件光标)的读写位置。
参数:
    stream:已经打开的文件指针
返回值:
    成功:当前文件流(文件光标)的读写位置
    失败:-1
*/
void rewind(FILE *stream);
/*功能:把文件流(文件光标)的读写位置移动到文件开头。
参数:
    stream:已经打开的文件指针
返回值:
    无返回值
*/
int fflush(FILE *stream);
/*功能:更新缓冲区,让缓冲区的数据立马写到文件中。
参数:
stream:文件指针
返回值:
成功:0
失败:-1
*/
系统调用函数

网络编程里的系统调用:点击跳转

  • 27
    点赞
  • 182
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
嵌入式C语言是针对特定硬件平台设计的一种编程语言,它的语法与标准C语言相似,但为了适应资源有限的环境,通常会有所简化和优化。以下是一些关键的嵌入式C语言常用语法知识点: 1. 数据类型:常见的有基本数据类型(如int、char、float)、结构体(struct)、共用体(union)、枚举(enum)以及定义硬件特有的数据类型(如GPIO引脚状态等)。 2. 变量声明和初始化:在嵌入式,注意内存分配的效率,可能需要预先定义变量或者使用静态存储区。 3. 功能库使用:许多嵌入式系统有自己的API或库,例如UART通信、GPIO控制、断管理等,要了解如何正确调用这些函数。 4. 函数定义和调用:嵌入式程序往往依赖于函数的模块化设计,可能涉及到断服务程序(ISRs)和裸断。 5. 预处理指令:#define、#include、#ifdef、#ifndef等用于宏定义、头文件引用和条件编译。 6. 指针:嵌入式系统指针的使用非常频繁,特别是在内存管理和硬件操作。 7. 操作符重载和运算符优先级:由于资源限制,嵌套操作可能较少见,但理解基本的运算符优先级仍然重要。 8. 错误处理和异常处理:考虑到资源有限,嵌入式程序通常更注重错误检查和简单的异常处理机制。 9. 结构化编程:循环、分支结构(if-else、switch)、递归等控制流结构必不可少。 10. 低级别硬件交互:可能会直接操作寄存器或者访问内存地址,理解和编写汇编代码的知识也常常被要求。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值