龙空技术网

C语言的调试利器 - printf 大法,无坚不摧,攻无不破

远峰linux编程学堂 531

前言:

现在姐妹们对“c语言二进制输出格式符”大致比较注重,兄弟们都需要学习一些“c语言二进制输出格式符”的相关内容。那么小编在网摘上网罗了一些有关“c语言二进制输出格式符””的相关文章,希望小伙伴们能喜欢,同学们一起来学习一下吧!

程序输入与输出

当我们操作一个linux终端的时候,执行linux命令程序,可以看到命令的输出信息,或者要求输入数据。那么,这些操作就是linux命令程序与用户进行交互。程序与用户的交互过程,可以认为是程序的输入与输出过程。这里我们先介绍程序在终端的输入与输出;当介绍到文件操作的时候,程序可以与硬盘进行输入输出的操作。

printf函数

在编程的过程中,我们需要输出一些有用的调试日志信息,便于跟踪调试程序。例如,我们想知道在程序运行的过程中,某一个变量的值,某一个内存地址的值,或者提示用户,当前程序正在进行什么工作。那么,这一切都离不开printf()函数。

在C语言的库函数中,提供了printf()函数,能够输出多种数据格式,非常有用于调试输出信息。更高级的使用,可以配合sprintf()或snprintf()函数,可以把数据格式化输出到内存块中,方便快速组合出有用的字符串格式。

首先,我们来看看printf()函数,如下是一个简单的测试例子:

程序运行的结果如下:

可以看到,在printf()函数中,把age变量的值给打印出来,让我们可以看到程序里,某一个变量的内容。此时,我们知道了printf()函数的作用,那么,下面来看看printf()函数的定义格式和各种使用方式。

2.1 printf函数定义和基本使用

C语言提供的printf()函数定义如下:

int printf(const char* format_str, [argument list]);

函数分析:

(1) 参数 format_str 是控制格式输出字符串;

(2) 参数 argument list 是参数列表,该参数是可选参数,不是必须要设置的,可以为空;

(3) 函数的返回值是int类型,是实际打印输出的字符个数;

如下是一个程序测试例子:

程序运行的结果如下:

就是只输出一串字符串。在这个例子中,printf()函数的参数只携带了控制格式输出字符串,不携带参数列表。所以,它的作用就只是输出一串字符串。

2.2 printf函数输出格式1 输出字符和字符串

格式转换符有:

(1) %c --- 输出一个字符;

(2) %s --- 输出一个字符串;

如下是程序测试例子:

程序运行的结果如下:

通过测试例子,可以知道:

(1) %c 格式,把变量a存储的数据当作一个字符输出;

(2) %s 格式,把变量pstr指向的字符串输出;

2 输出有符号和无符号整数

格式转换符有:

(1) %d --- 输出有符号数的十进制格式;

(2) %u --- 输出无符号数的十进制格式;

如下是程序测试例子:

程序运行的结果如下:

通过测试例子,可以知道:

(1) %d 格式,输出有符号数的十进制格式,例如上面的例子中,把255这个数值存放到a变量,由于a是char类型,只有1个字节的容量。255表示的二进制是1111 1111,最高位是符号位,符号位为1表示负数。最终,表示的负数是:数值位取反,得到000 0000,然后,再加1,就得到 000 0001,所以,就是-1这个数值。

(2) %u 格式,输出无符号数的十进制格式,在上面的例子中,unsigned 指定变量是无符号类型,所以,unsigned char 这个类型表示的1个字节中,没有符号位,一个字节中的8位都是数值位,所以,存放的二进制是 1111 1111表示的数值就是255。

3 输出十六进制和八进制

格式转换符有:

(1) %x --- 输出数值是十六进制格式,是小写字符;

(2) %X --- 输出数值是十六进制格式,是大写字符;

(3) %o --- 输出数值是八进制格式;

如下是程序测试例子:

程序运行的结果如下:

通过测试例子,可以知道:

(1) %x格式,把变量x存放的数据值,以十六进制格式输出,如果输出十六进制有字母,则以小写格式表示。

(2) %X格式,就是大写的X字母,以十六进制格式输出变量x的值,如果输出的十六进制有字母,则以大写格式表示。

(3) %o格式,是以八进制格式输出数值。

4 浮点数

格式转换符有:

(1) %f --- 以浮点数的格式输出数值,就是带小数点的数据;

(2) %e --- 以科学计数法e的方式输出浮点数;

如下是程序测试例子:

程序运行的结果如下:

通过测试例子,可以知道:

(1) %f格式,输出带有小数点的浮点数;

(2) %e格式,以科学计数法e的方式输出浮点数的值,例如上面的例子中,输出:

x1 = 1.250000e+01

根据科学计数法e的表示格式,e字母后面带数值N表示10的N次方。那么,1.250000e+01这个数值中,e字母后面带有数值1,表示10的1次方。所以有:

1.250000e+01 = 1.250000 * 10^1 = 1.250000 * 10 = 12.5

所以对于x这个数值,使用%f, %e格式表示,都是相同的值。

5 转移字符

转移字符格式有:

(1) \n --- 换行;

(2) \t --- 水平跳格,如同按下TAB按键;

(3) \r --- 回到当前行的开始位置;

(4) \’ --- 输出单引号;

(5) \” --- 输出双引号;

(6) \\ --- 输出一条反斜杠;

如下是程序测试例子:

程序运行的结果如下:

其中,注意:

printf("abcwww\r123\n");

开始在新的一行输出 abcwww,然后,遇到 \r 的时候,回到行的开始位置,就回到字符a这个位置,然后,再输出123,此时,新输出的123字符就把abc字符给覆盖。最终,输出123www这样的字符。

标签: #c语言二进制输出格式符 #c语言怎么进行调试 #c语言调试 #c语言10的次方 #c语言中print和printf