10.你真的了解printf吗?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43200844/article/details/102753382

你真的懂printf吗?

本帖主要是以代码的形式讲述printf();的诸多用法。

printf用法总结

/*
*printf();
*一般形式:printf("格式控制",输出表);
*  %[-][0][m][.n][l]格式字符
* - 输出的数字或者字符以左对齐,右边填充空格
* 0 输出的空位用0来填充
* m (正整数)输出数据的字段宽度。实际位数多于m,按实际的输出,少于m则补空格或者补零
* .n (正整数)对实数,表示输出n位小数;对字符串,表示截取的字符串个数
* l (字母)输出长整型整数
*/

图片展示:

在这里插入图片描述

基本用法


/*
*Copyright (c) 2019.池州市集成电路可靠性分析与嵌入式研究实验室
*All rights reserved.
*摘要:程序功能,列举出printf, sprintf, fprintf的用法,以及各种数据类型的输出
*文件名称:数据交换.c
*文件标识:无
*
*当前版本:v1.0
*作者:乔勇刚
*完成日期:2019/09/08
*
*/

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

void main(void)
{
	printf("hello world");
	printf("\na=%d,str=%s", 10, "1526edf"); //输出到文件,输出到命令行,输出到网页
	printf("\nc=%d,\n", 10); //实际上printf打印的就是字符串,只不过cpu先将10映射到%d里面,在输出

	system("pause");

}

图片展示:
在这里插入图片描述

拓展用法1


void main(void)
{

	char inputstr[10] = "0";
	char strall[30] = "0";
	char cmdstr[30] = "color";
	scanf("%s", inputstr);

	sprintf(strall, "%s %s",cmdstr,inputstr);
	//sprintf 将参数整合到字符串中 , 同样也可以是实现字符串的拼接
	//%s%s 拼接
	//%.2s只能从左边截取
	system(strall);
	printf("\n%s\n", strall);
	system("pause");
}

图片展示:
在这里插入图片描述

拓展用法2

void main(void)
{
	printf("\n%d", 10); //有多宽,显示多宽
	printf("\n%10d", 10); //位宽是10 ,右对齐
	printf("\n%-10d", 10); //左对齐
	printf("\n%-010d", 10); 
	printf("\n%010d", 10); 
	printf("\n%3d", 123456); //原方式显示,不会截取
	printf("\n%3s", "123456");
	printf("\n%.3s", "1234565"); //截取字符串
	printf("\n%.3f", 12.34565); //截取小数点后的数据



	system("pause");
}

图片展示:

在这里插入图片描述

拓展用法3

void main(void)
{
	int num = 123456789;

	printf("\n%d", num); //有符号十进制
	printf("\n%i", num); //有符号十进制
	printf("\n%u", num); //无符号十进制
	printf("\n%o", num); //无符号八进制
	printf("\n%x", num); //无符号十六进制

	system("pause");

}

图片展示:
在这里插入图片描述

拓展用法4

void main(void)
{
	char ch = 'a';

	printf("%c\n", ch); //字符输出
//	printf("%s\n", ch); //字符输出
	putchar(ch);
	putchar('\n');

	char str[20] = "calc"; //字符串输出
	printf("%s\n", str);


	system("pause");

}

图片展示:
在这里插入图片描述

拓展用法5

void main(void)
{
	double db = 1234567812;
	printf("%e", db);
	//数据总数占据12位,+代表10几次方,-代表10的负几次方

	printf("\n%g", db);
	/*
	根据数值的大小,输出最小位宽的数字,可能是%f形式,
	也可能是%e形式且不输出没用的0
	*/
	system("pause");
}


图片展示:

在这里插入图片描述

拓展用法6

void main(void)
{


	printf("%d,%d,%d,%d\n", sizeof(short int), sizeof(int), sizeof(long), sizeof(long long));
	//输出的是多少个word ,一个word八个位。
	{
		unsigned short int unum = 65535; 
		//16位存储 短整型的范围 2e+16-1 2的16次方减1 635535
		short int num = 65535;
		printf("%hu,%hd\n", unum, num);
	}

	//不同的块语句里面相互独立,不会产生重定义
	{
		unsigned  int unum = 65535; 
		 int num = 65535;
		printf("%u,%d\n", unum, num);
	}

	{
		unsigned  long unum = 65535; 
		long  num = 65535;
		printf("%lu,%ld\n", unum, num);
	}

	{
		unsigned  long long unum = 65535;
		long long num = 342425199801164014;
		printf("%llu,%lld\n", unum, num);
	}

	system("pause");
}

图片展示:
在这里插入图片描述

拓展用法7

void main(void)
{
	//int num = 0128; 
	//0开头代表是八进制,但是八进制中最大位数字不能超过8
	int num = 0127;
	printf("%o", num);
	printf("\n%#o", num);

	int data = 0x1234a;
	printf("\n%x", data);
	printf("\n%#x", data);
	//所以我们再看进制的时候,需要在%好号后面加上#号,表示不同的进制

	system("pause");
}

图片展示:
在这里插入图片描述

拓展用法8

void main(void)
{
	//printf("%D", 10);  //%d不能大写
    //printf("%O", 010); //%o不能大写
	//printf("%U", 010); //%u不能大写
	//printf("%#X", 0X10); //%x能大写

	printf("%E\n", 123456789.0);// %e能大写
	//有字母输出的可以大小写,没有字母,只有数字的不能大小写
	//printf不会帮你完成数据转化,需要精确匹配

	printf("\"123\"\n"); 
	//转义字符"\"
	printf("\"123%%%%\"\n"); //只会显示连两个“%”

	system("pause");
}

图片展示:
在这里插入图片描述

拓展用法9

void  main(void)
{
	double db = 1.234567890123456789;
	for (int i = 1; i < 20; i++)
	{
		printf("\n %.*f", i, db); 
		//* 号可以代替i的变量 一个不确定的量用“*”
	}


	char str[100] = "1.234567890123456789";
	for (int i = 1; i < 20; i++)
	{
		printf("\n %.*s", i, str);
		//* 号可以代替i的变量 一个不确定的量用“*”
	}

	system("pause");
}

图片展示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43200844/article/details/102753382
今日推荐