1.printf(("%%d)=%d", a), 这里%% 可以输出%
2.sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,而printf是将一个格式化的字符串输出到屏幕
3.
sprintf()最常见的应用之一莫过于把整数打印到字符串中,如:
char s[10];
sprintf(s, "%d", 123); //把整数123打印成一个字符串保存在s中
sprintf(s, "%8x", 4567); //小写16进制,宽度占8个位置,右对齐
4、函数名: gcvt()
功 能: 把浮点数转换成字符串
用 法: 如下
char *gcvt(**double** value, **int** ndigit, **char** *buf);
例子:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
char str[25];
double dNum;
int n = 5;//需要转化的位数
//一般浮点数
dNum = 9.876;
gcvt(dNum, n, str);
printf( "string = %s\n", str);
// **输出** **string = 9.876**
}
//负数
dNum = -123.4567;
gcvt(dNum, n, str);
printf("string = %s\n", str);
// **输出** **string = -123.46** **注意:四舍五入了**
//指数
dNum = 0.678e5;
gcvt(dNum, n, str);
printf("string = %s\n", str);
// **输出** **string = 67800**
return 0;
}
问题1:C语言%d与%hhd的区别,二 者在什么时候不能替换使用(什么时候替换使用后输出内容不同)?
解答:
%d:把输入解释成一个有符号十进制整数
%hhd:把整数读作signed char 或 unsigned char
输出类型不一样。
问题2: C语言%c,%hhd有什么区别
解答:
二者针对类型都是单字节整数,也就是char或者unsigned char。
不过%c在输入输出的时候,是按照字符操作的。
%hhd是按照整数操作。
举例来说,
同样输出值为48(字符0的ascii码值)。用%c输出就是0. 用%hhd输出就是48
问题3:C语言中 %p的含义,与%x的区别
格式控制符“%p”中的p是pointer(指针)的缩写。指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。
printf函数族中对于%p一般以十六进制整数方式输出指针的值,附加前缀0x。
int i = 1;
printf("%p",&i);
相当于:
int i = 1;
printf("0x%x",&i);
对于32位的指针,输出一般会是类似0xf0001234之类的结果。
但对于64位的指针,结果会不一样,所以建议打印指针就用%p,因为:
%p是打印地址的, 而%x是以十六进制形式打印, 完全不同
(指针的大小是不确定的,由实现决定。根据地址空间的大小,一般有16位、32位、64位的指针。尽管目前32位平台上的指针一般全是32位的,但旧的一些平台上可能有多种长度的指针)
下面是main中代码:
int arr[5] = {10,20,30,40,50};
int i = 0;
printf("数据:\n\n");
printf("十进制表示的数据:\n");
for(i = 0 ; i < 5 ; i++)
{
printf("%d\t",arr[i]);
}
printf("\n\n指针形式十六进制表示的数据:\n");
for(i = 0 ; i < 5 ; i++)
{
printf("%p\t",arr[i]);
}
printf("\n\n普通十六进制表示的数据:\n");
for(i = 0 ; i < 5 ; i++)
{
printf("%x\t",arr[i]);
}
printf("\n\n\n地址:\n");
printf("\n\n十进制表示的地址:\n");
for(i = 0 ; i < 5 ; i++)
{
printf("%d\t",&arr[i]);
}
printf("\n\n指针形式十六进制表示的地址:\n");
for(i = 0 ; i < 5 ; i++)
{
printf("%p\t",&arr[i]);
}
printf("\n\n普通十六进制表示的地址:\n");
for(i = 0 ; i < 5 ; i++)
{
printf("%x\t",&arr[i]);
}
printf("\n");
代码结果:
数据:
十进制表示的数据:
10 20 30 40 50
指针形式十六进制表示的数据:
0000000A 00000014 0000001E 00000028 00000032
普通十六进制表示的数据:
a 14 1e 28 32
地址:
十进制表示的地址:
9435912 9435916 9435920 9435924 9435928
指针形式十六进制表示的地址:
008FFB08 008FFB0C 008FFB10 008FFB14 008FFB18
普通十六进制表示的地址:
8ffb08 8ffb0c 8ffb10 8ffb14 8ffb18
————————————————
版权声明:本文为CSDN博主「小白tree」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43469047/article/details/100192467