设为首页 加入收藏

TOP

printf()函数详细了解(一)
2018-01-03 06:06:40 】 浏览:595
Tags:printf 函数 详细 了解

最原始的数据输入输出是经过终端(黑窗口),后面随着计算机技术的发展,出现了图形界面(例如网页的表单)以及移动终端上常用的语音输入输出(IOS的Siri,Android的讯飞语音)的发展过程。

C语言提供了一系列的数据输入输出的函数,从第一个helloworld程序中使用的printf()函数以及后面用于读取键盘输入的scanf()函数以及字符的输入输出putchar(),getchar()等等。

printf()函数详解

printf本意是print format,也就是格式化输出,默认输出是到终端(控制台),同时结合重定向符号”>”可以输出到文本,如下应用所示

/*
使用printf函数结合重定向>输出数据到文本
@author tony ittimeline@163.com
@date 2017/12/03 13:07
@website www.ittimeline.net
*/

void printf_text() {

    printf("输出数据到文本的案例");
    printf("架构设计、人工智能");


}

当使用VisualStudio菜单的的生成->生成解决方案(Ctrl+Shift+B)后,在解决方案的Debug目录下(例如C:\Users\tony\source\repos\CPrimerPlus6\Debug)有一个编译好的二进制文件CPrimerPlus6.exe,如图所示
printf_text

也可以将数据格式化显示在网页(1.6 helloworld详解章节中详细解释过如何输出在网页,这里不再赘述)。

printf()函数其特点是会按照指定的格式进行数据解析后输出,不会进行数据类型转换,如下所示,按照正确的数据格式解析会得到正确的结果。

#include 
  
   
/*

    printf函数按照指定的格式解析数据案例
    @author tony ittimeline@163.com
    @date 2017/12/03 13:29
    @website www.ittimeline.net
*/
void prinf_summary() {


    printf("hello printf\n"); //默认输出到控制台(命令提示符程序)输出的数据最终都是字符串

    printf("num=%d\t str=%s\n",10,"timeless"); //输出到命令行终端、文件、网页

    system("pause");
}
  

C语言没有提供Java那样通过加号连接字符串,但是可以使用sprintf()函数实现字符串的拼接,如下应用程序所示,根据用户输入的字符串(0-9,A-F),然后拼接成命令实现终端窗口的颜色变化,在终端上执行。

#define _CRT_SECURE_NO_WARNINGS
#include 
  
   
#include 
   
     /* sprintf函数用于字符串整合 @author tony ittimeline@163.com @date 2017/12/03 13:29 @website www.ittimeline.net */ void sprintf_sample() { printf("请输入一个字符串 用来变换终端的颜色\n"); char str[100] = { 0 }; char input[100] = { 0 };//存储输入的字符串 scanf("%s", input);//读取输入的字符串 //.2s 就是从左到右截取俩字符 sprintf(str, "color %.2s", input);//将输入的字符串(第二个参数)整合到str字符串中 system(str);//执行命令调用 system("pause"); }
   
  

printf通用格式控制字符的使用

在日常开发中,例如cgi网页程序中可能需要使用到调整数据的对齐方式,数据的指定的宽度以及数据的截取等等,这就会使用到一些通用的格式控制字符,如下的表格描述了具体的格式化字符串以及它们的作用。

格式符 功能描述
- 默认的数据输出是右对齐,这里使用左对齐的方式。
m 控制数据的显示宽度,如果实际的宽度大于m,按照实际的宽度显示,如果实际的宽度小于m,则填充0或者空格
.n 作用于浮点数,则是保留小数点后n位,如果是作用于字符,则是截取字符的长度。
0 输出的空位用0填充
l 输出长整型整数

printf()函数通用数据格式控制字符应用案例如下所示

#include 
  
   
#include 
   
     /* 通用的格式控制字符串详细说明 m 限定宽度,如果实际宽度多余m,按照实际的位数输出,如果少于m,则补零或者空格 .n 对于浮点数,小数点后保留n位 ,对于字符串,截取n位 l 输出长整数 o 输出的空位用0填充 - 输出的数字或者字符以左对齐(默认是右对齐) 右边填充空格 @author tony ittimeline@163.com @date 2017/12/28 10:29 @website www.ittimeline.net */ void print_format_info() { // int num = 10; printf("%d\n", num);//默认是右边对齐有多宽分配多宽 printf("%10d\n", num);//限定宽度为10 如果是实际位数多余10,按照实际位数输出,如果少于10位数,则补零或者空格 printf("%010d\n", num);//宽度为10,空余填充0 printf("%-d\n", num); //"-"左边对齐 //小数点后保留两位 printf("%.2f\n",3.1415927); //截取字符串 char str[100] = "notepad1"; char command[100] = {0}; sprintf(command,"%.7s",str); system(command); printf("%ld\n",123456789); //%d和%ld在32位以上的
    系统是等价的 system("pause"); }
   
  

字符串的截取案例

日常开发中的字符串截取除了最常使用的从左向右截取外,还有截取中间的指定部分内容,例如获取身份证的出生年月等等

截取身份证的出生年月日如下应用程序所示

#include 
  
   
#include 
   
     /* 截取身份证的出生年月日 @author ittimeline@163.com @date 2018/1/1 20:56 @website www.ittimeline.net */ void spintf_split_id_brithday() { //身份证 char id_str[20] = "140211197605010352"; char brithday[10] = { 0 }; sprintf(brithday,&quo
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇句芒算法(morn)详情:矩阵运算 下一篇C单链表的实现代码教程

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目