C语言是当中广泛的计算机编程语言,是所有计算机编程语言的祖先,其他计算机编程语言包括当前流行的Java语言,都是用C语言实现的,C语言是编程效率高的计算机语言,既能完成上层应用开发,也能完成底层硬件驱动编程,在计算机程序设计当中,特别是在底层硬件驱动开发当中,具有不可替代的作用。在C语言学习过程当中,除了学习好C语言基本语法外,掌握常用的C语言库函数的使用也是非常重要的,本文主要给同学们详细讲解在实际项目开发过程中常用C语言函数的用法。

1 printf 函数

函数原型:int printf(const char *format,[argument]);

功能:实现格式化输入输出

返回值:实际输出的字符个数

函数参数:format 格式化字符串

argument 要输出的参数

常用的格式化类型有:

d 有符号10进制整数

o 无符号8进制整数

u 无符号10进制整数

x 无符号的16进制数字,并以小写abcdef表示

X 无符号的16进制数字,并以大写ABCDEF表示

f 浮点数

c 单个字符

s 字符串

p 显示一个指针,near指针表示为:XXXX,far指针表示为:XXXX:YYYY

用法举例:

以10进制形式输出整形变量a的值;

int a = 100;

printf("a=%d\n", a);

上面程序的执行结果为:在屏幕终端输出 a=100

2 fprintf函数

函数原型:int fprintf (FILE* stream, const char*format, [argument])

功能:将按照格式化字符串格式化后的数据输出到文件流stream中,

返回值:实际写入到文件的字符个数

函数参数:stream 要输出的文件流指针

format 格式化字符串

argument 要输出的参数

备注:fprintf和printf函数非常类似,使用方法也相同,它们不同之处在于printf函数是输出结果到标准输出终端,一般为屏幕,而fprintf是将结果输出到指定的文件流;如果将参数输出文件流stream设置为标准输出流stdout,则与printf函数等效,如下所示:

fprintf (stdout, const char*format, [argument])

用法举例:

例如:将一个格式化字符串写入到文件file1.txt中

FILE *fp = fopen("file1.txt","wb");

int count = 190;

fprintf(fp,"hello :%d\n", count);

上面程序的执行结果为往file1.txt文件中写入 "hello :190" 字符串.

3 sprintf 函数

函数原型:int sprintf (char* buffer, const char*format, [argument])

功能:将按照格式化字符串格式化后的数据输出到字符串buffer中

返回值:实际输出到字符串buffer的字符个数

函数参数:buffer 要输出的字符串指针

format 格式化字符串

argument 要输出的参数

备注:sprintf和printf函数非常类似,使用方法也相同,它们不同之处在于printf函数是输出结果到标准输出终端,一般为屏幕,而sprintf是将结果输出到指定的字符串buffer;

用法举例:

将一个格式化字符串写入到目标字符串buffer中

char buffer[50] = {0};

int count = 190;

fprintf(buffer,"hello :%d\n", count);

上面程序执行后,buffer中保存字符串 "hello :190"

4 scanf 函数

函数原型:int scanf(char *format [,argument,...])

功能:从标准输入设备(一般指键盘)实现格式化输入

返回值:成功返回读入的数据项个数

函数参数:format 格式化字符串

argument 输入数据项的地址列表

常用格式类型参考printf函数的个格式类型

用法举例:

从标准输入设备中输入一个整数到整形变量a中,输入一个浮点数到浮点型变量b中

int a=0;

float b=0;

scanf("%d%f",&a,&b);

上面程序执行后,从键盘输入: 19 18.6 ,程序将 19赋值给变量a, 18.6赋值给变量b .

备注: scanf 函数格式化字符串中不能加 \n,如上例中这样写 scanf("%d%f\n",&a,%b) 是错误的。

5 sscanf 函数

函数原型:int sscanf(const char *buffer, char *format [,argument,...])

功能:读取格式化字符串中的位置

返回值:成功返回读入的数据项个数

函数参数:buffer 要读取的格式化字符串

format 格式化字符串

argument 输入数据项的地址列表

备注: sscanf函数的使用和scanf函数非常类似,它们之间的区别在于 scanf函数是从标准输入设备输入,而sscanf 是从指定的字符串输入;

用法举例:

通常使用sscanf函数类实现数据类型转换,将字符串转换为整形或浮点型数据,举例如下:

char str[]="0x1a";

int b=0;

sscanf(str,"0x%x",&b);

上面程序的执行结果将字符串0x1a 转换成对应的16进制值保存到变量b中 .

6 getchar 函数

函数原型: int getchar(void)

功能: getchar 函数的功能是从标准输入设备读取下一个字符,包括回车换行符都能读取

返回值: 成功返回用户输入字符对应的ASCII码,失败返回 -1;

函数参数: 无

备注: getchar 函数实质是从标准输入设备缓冲区读取一个字符,用户调用 getchar 函数的时候,如果标准输入缓冲区没有数据,则等待用户从键盘输入;否则,直接从标准输入缓冲区读取一个字符,而不等待用户从键盘输入;请看下面的例子:

int a = 0;

char b = 0;

scanf("%d", &a);

b=getchar();

在上面代码中,我们首先调用 scanf 函数从键盘输入一个整数到变量a中,接着调用getchar函数从键盘输入一个字符到变量b中;但实际运行时,我们会发现输入整数变量a后,程序并没有停下来让我们输入字符变量b,这是因为我们在输入整形变量a后,输入缓冲区中保存了回车符,程序在执行getchar函数时,发现输入缓冲区中有回车符,直接读取了输入缓冲区中的回车符,而不再等待用户从键盘输入.解决办法是,在调用函数getchar输入字符之前,先清空缓冲区,

如下所示:

int a = 0;

char b = 0;

scanf("%d", &a);

while(getchar()!='\n'); //清空输入缓冲区

b=getchar();

上面程序中,在调用getchar()函数从键盘读取字符之前,先执行语句while(getchar()!='\n'); 清空输入缓冲区.

用法举例:

从标准输入设备输入一个字符到字符变量 s 中

char s = 0;

s = getchar();

7 fgets 函数

函数原型: char *fgets(char *buf, int bufsize, FILE *stream);

功能: 从文件流stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中。

返回值: 函数执行成功返回buf

失败或读到文件结尾返回NULL

函数参数:buf ,字符指针,用来存取所读取的数据;

bufsize, 整数,buf缓冲区的大小;

stream, FILE指针,表示将要读取的文件流;

备注:使用 fgets函数读取文件流数据的时候,每次多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。如若该行(包括后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。如果stream设置为标准输入流 stdin,则表示从标准输入设备键盘读取一行数据;

用法举例:

从标准输入设备读取一行字符串到字符数组 str中

char str[100] = {0};

fgets(str,100,stdin);

printf("%s\n",str);

8 memset 函数

函数原型: void *memset(void *buffer, int ch, size_t count)

功能: 将buffer中当前位置后面的count个字节用 ch 替换

返回值: 返回 buffer

函数参数: buffer 指针或数组,内存缓冲区的首地址

ch 赋给 buffer的值

count buffer的长度

备注: memset函数按字节对内存块进行初始化,实际项目开发过程中,我们通常使用memset来对一块内存进行清0或填充某一个特定的值;它是对较大的结构体或数组进行清零操作的一种快方法。

用法举例: 使用memset函数对数组清0

char strbuf[1000];

memset(strbuf,0,1000);

9 memcpy 函数

函数原型: void *memcpy(void *dest, const void *src, size_t n)

功能: 由src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内。

返回值: 函数返回一个指向dest的指针

函数参数: dest 目标数据缓冲区起始地址

src 源数据缓冲区起始地址

n 要复制的字节数

备注: 由于函数拷贝的过程是一个字节一个字节的拷贝的,所以实际操作的时候要把void*强制转化为char*,这样在指针加的时候才会保证每次加一个字节.在实际项目中,通常使用memcpy函数来给结构体变量赋值.

用法举例: 使用memcpy函数将struct sockaddr_in 结构体变量 addr赋值给addrx

memcpy((char *)&addr,(char *)&addrx, sizeof(struct sockaddr_in))

以上就是今天我要给同学讲解的常用C语言函数的使用,当然C语言的库函数还有很多,这里我们就不一一列举了,希望对同学们能有所帮助。

c语言中各种函数的作用,C语言常用函数用法大全相关推荐

  1. c语言中预处理指令的作用,C语言中常用预处理指令

    转载自 https://blog.csdn.net/farsight2009/article/details/58602886 姓名:张艳博 学号:17021223249 [嵌牛导读]: C语言中常用 ...

  2. c语言中的除号什么作用,c语言中除号用什么表示

    前言继承是OOP设计中的重要概念.在C++语言中,派生类继承基类有三种继承方式:私有继承(private).保护继承(protected)和公有继承(public).一.继承规则继承是C++中的重要特 ...

  3. c语言中 程序各步作用,C语言学习网总结C语言学习五步曲

    很多人对C语言的第一感觉就是太难了,很难理解这种语言,也不知道该如何来理解,书也看了,视频也看了,但就是没什么太大的作用,那么C语言究竟该如何来学? C语言作为一门计算机语言,想要真正的掌握并使用需要 ...

  4. c语言中初始化的主要作用,C语言初始化——栈的初始化

    栈是一种具有后进先出性质的数据组织方式,也就是说后存放的先取出,先存放的后取出.栈底是第一个进栈的数据所处的位置,栈顶是最后一个进栈的数据所处的位置. 1.满栈与空栈 根据SP指针指向的位置,栈可以分 ...

  5. C语言中动态数组的作用,C语言实现动态数组

    前言 在纯C语言编程中,数组的创建必须是固定的大小,因为C语言本身没有提供动态数组这种数据结构,这是一个让习惯了使用高级语言编程的人转做C开发面临的一个很头疼的问题,本篇文章就将介绍如何使用纯C语言编 ...

  6. C语言中的逗号的作用,C语言逗号运算符和逗号表达式基础总结

    逗号运算符的作用: 1,起分隔符的作用: 定义变量用于分隔变量:int a,b 输入或输出时用于分隔输出表列 printf("%d%d",a,b) 2,用于逗号表达式的顺序运算符 ...

  7. c语言中符号起什么作用,C语言中的符号 和 | 是什么意思?

    &: 在C语言中有两种意思,一种是取地址符,是单目运算符:另一种是位运算符,表示"按位与",是双目运算符.|: 是位运算符,表示"按位或". 资料扩展 ...

  8. c语言中反斜线的作用,C语言中反斜杠的使用

    问题1: #define f(z) (z<2)?(((2-z)*(2-z))*((2-z)*(2-z)))*\ (((2-z)*(2-z))*((2-z)*(2-z)))/560:0; 上面这个 ...

  9. c语言中循环结构的作用,C语言循环结构知识点

    C语言循环结构知识点 引导语:循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构.以下是百分网小编分享给大家的C语言循环结构知识点,欢迎 ...

  10. c语言中 小括号的作用,c语言小括号的用法有哪些用处

    C语言的小括号里面表示一条语句,返回值是多条语句中最靠右的语句的返回值,下面学习啦小编就为大家介绍c语言小括号的用法,欢迎大家阅读. c语言小括号的用法:单小括号 () ①命令组.括号中的命令将会新开 ...

最新文章

  1. es6常用语法和特性
  2. 计算机专业大二分方向,该选择人工智能还是网络安全
  3. Python过滤掉numpy.array中非nan数据
  4. 如何删除JAVA集合中的元素
  5. (Java)Integer类的其他常用方法
  6. 爱心的数学函数方程_高中数学中的函数与方程思想
  7. Javascript 脚本错误.
  8. php密送,向多个收件人发送电子邮件 – 抄送:和密送:在PHP中
  9. CarMaker快速入门
  10. 数学建模之预测方法总结与案例
  11. 如何将mpg格式转换为mp4格式?
  12. CTF 内涵的软件 stage1
  13. 【防火墙QOS 基于策略的带宽控制】
  14. 【C语言】强符号和弱符号
  15. 网上下载的PPT模板总是会自动切换、自动播放动画,怎么取消自动播放
  16. 一摞烙饼的排序(搜索树)
  17. 对谈 | 创新与进化——当开源接受SaaS
  18. 与声网面对面!声网Agora开发者吐槽大会招募中
  19. 乱入 ps。photoshop cs6菜单界面太小怎么调大
  20. Verilog——74HC151八选一数据选择器并扩展为16选1数据选择器

热门文章

  1. 数据挖掘 是“大忽悠”还是“懵懂少年”
  2. 直接通过adb shell cmd直接打开android apk
  3. 车载通信——通信方式
  4. 【】每日360题,2019.11.06日18点财会类考试习题答案
  5. Python趣味算法入门 - 打鱼还是晒网
  6. AI英雄们,我们邀你向病理诊断和智能投顾发起挑战!| 人工智能创新创业大赛...
  7. [go 语言学习笔记] 7天用Go从零实现分布式缓存GeeCache 「已完结」
  8. 怎样修改MathType公式编号
  9. ctrl-z、fg、bg、nohup、setsid、()与、disown、screen
  10. 关于eclipse新版本配置Tomcat以及没有webcontent文件夹等各种问题的解决