Linux C 字符串输出函数 puts()、fputs()、printf() 详解
一、puts() 函数详解
puts()函数用来向 标准输出设备 (屏幕)写字符串并换行,调用格式为:
puts(s);
其中s为字符串变量(字符串数组名或字符串指针)。
puts()函数的作用与语 printf("%s\n", s) 相同。
#include <stdio.h>
#include <string.h> int main(int argc, char **argv)
{
char s[20], *f; strcpy(s, "Hello world!"); // 字符串数组变量赋值
f = "Thank you"; // 字符串指针变量赋值 puts(s);
puts(f); return 0;
}
说明:
(1)puts()函数只能输出字符串,不能输出数值或进行格式变换。
(2)可以将字符串直接写入 puts() 函数中。如:
puts("Hello, Turbo C2.0");
二、fputs() 函数详解
原型:
int fputs(const char * s,FILE * stream);
功能描述:
将指定的字符串写入文件流中,不包含字符串结尾符'\0',返回值是字符, 发生错误时返回值是EOF,利用它可以 替换文件流中数据,但是不能添加数据。
示例:
#include <stdio.h> int main(int argc, char **argv)
{
FILE *fp;
char *filename = "/Users/jianbao/ClionProjects/apue/123.txt";
fp = fopen(filename, "r+");
fseek(fp, 3, SEEK_CUR); fputs("Insert Strings.", fp); return 0;
}
原文件内容:
1234
Second Line. Second Strings.
修改后文件内容:
123Insert Strings. Second Strings.
可以看出,将原文件中的“\n及Second Line.” 替换为了“Insert Strings.”
三、printf() 函数详解
printf()函数是式样化输出函数, 一般用于向 标准输出 设备按规定式样输出消息。printf()函数的挪用式样为:
printf("<式样化字符串>",<参量表>);
其中 式样化字符串 包括两部分内容:
一部分是正常字符, 这些字符将按原样输出;
另一部分是 式样化规定字符, 以"%"开端,后跟一个或几个规定字符,用来确定输出内容式样。
参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个数一样多, 各参数之间用","分开, 且顺序逐一对应, 不然将会出现意想不到的过失。
式样化字符串的式样是:
%[标志][输出最小宽度][.精度][长度]式样字符
1、标志:
标志 意义
- 结果左对齐,右边填空格
+ 输出标记(正号或负号)
空格 输出值为正时输出空格,为负时输出负号
# 正在八进制和十六进制线显现前导航O,Ox
假如你还不太理解,没关系!请瞧下面的例子就会了如指掌了:
例1:
#include <stdio.h> int main(int argc, char **argv)
{
int a = 100;
float b = 123.255; printf("(1)a=%d\n", a); // \n为转义字符,控制换行
printf("(2)a=%10d\n", a);
printf("(3)a=%-10d\n", a);
printf("(4)a=%+d\n", a);
printf("(5)a=% d\n", a);
printf("(6)a=%#o\n", a); // 8进制
printf("(7)a=%#x\n", a); // 16进制
printf("(8)b=%lf\n", b); // 能否对此行的输出存有疑问,这都是float精度惹的祸,卖前就晓得如何对其变动了 return 0;
}
输出:
(1)a=100
(2)a= 100
(3)a=100
(4)a=+100
(5)a= 100
(6)a=0144
(7)a=0x64
(8)b=123.254997
2、输出最小宽度:
(1) 用十进制整数来表示输出的最少位数。(至多要输出这么多位!)
(2) 若实际位数多于界说的宽度:则按实际位数输出。
(3) 若实际位数少于界说的宽度:a.则右对齐,左边留空。
b.有负号,左对齐,右边留空
c.表示宽度的数字以0开端,则右对齐,左边留空。
我们再来瞧一个例子:
#include <stdio.h> int main(int argc, char **argv)
{
int a = 3456; printf("(1)a=%3d\n", a); // 若实际位数多于界说的宽度:则按实际位数输出
printf("(2)a=%10d\n", a); // 若实际位数少于界说的宽度:则右对齐,左边留空
printf("(3)a=%-10d\n", a); // 若实际位数少于界说的宽度:有负号,左对齐,右边留空
printf("(4)a=%010d\n", a); // 若实际位数少于界说的宽度:表示宽度的数字以0开端,则右对齐,左边留空 printf("(5)a=%-010d\n", a); // 左对齐,0无意义。 return 0;
}
输出:
(1)a=3456
(2)a= 3456
(3)a=3456
(4)a=0000003456
(5)a=3456
3、精度:
精度式样符以“.”开头,后跟十进制整数。意义是:
假如输出数字,则表示小数的位数;若实际位数大于所界说的精度数,则四舍五进。若不敷则补0;
假如输出的是字符,则表示输出字符的个数;若实际位数大于所界说的精度数,则截走超出的部分。
例3:
#include <stdio.h> int main(int argc, char **argv)
{
printf("(1)%.3f\n", 12.3456);
printf("(2)%.9f\n", 12.3456);
printf("(3)%.3s\n", "abcdefg");
printf("(4)%.9s\n", "abcdefg"); return 0;
}
输出:
(1)12.346
(2)12.345600000
(3)abc
(4)abcdefg
所以对 例1 中的 printf("b=%lf", b) 只需改为 printf("b=%.2lf", b) 就可以对结果进行2位小数的保存了!
4、长度:
长度式样符为 h,l 两种,h表示按短整型量输出,l表示按长整型量输出。
5、式样字符:
式样 意义
————————————————————————————
d: - 以十进制方式输出带标记整数(正数不输出标记);
u: - 以十进制方式输出无标记整数;
f: - 以小数方式输出单、双精度实数;
e: - 以质数方式输出单、双精度实数;
g: - 以%f,%e中较短的输出宽度输出单、双精度实数;
c: - 输出单个字符;
s: - 输出字符串。
————————————————————————————
注:l正在d,o,x,u,前,指的输出精度为long型;正在e,f,g前,指定输出精度为double型
最后还是讲些 转义字符 吧:
转义字符是C言语中表示字符的一种非凡方式。一般使用转义字符表示ASCII字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号('),用于表示字符串常量的双撇号(")和反斜杠(/)等。转义字符用反斜杠/后面跟一个字符或一个八进制或十六进制数表示。
转义字符 意义 ASCII值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) 008
\f 换页(FF) 012
\n 换行(LF) 010
\r 回车(CR) 013
\t 程度制表(HT) 009
\v 笔挺制表(VT) 011
\/ 反斜杠 092
\? 问号字符 063
\' 单引号字符 039
\" 双引号字符 034
\0 空字符(NULL) 000
\ddd 恣意字符 三位八进制
\xhh 恣意字符 二位十六进制
字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都务必使用转义字符表示,即正在这些字符前加上反斜杠。
正在C步骤中使用转义字符\ddd或者\xhh可以方便灵便地表示恣意字符。\ddd为斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制ASCII值。\x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制ASCII值。
使用转义字符时需求注重以下标题:
(1) 转义字符中只能使用小写字母,每个转义字符只能瞧作一个字符。
(2) \v 笔挺制表和\f 换页符对屏幕没有任何影响,但会影响打印机施行呼应作。
(3) 正在C步骤中,使用不可打印字符时,一般用转义字符表示。
Linux C 字符串输出函数 puts()、fputs()、printf() 详解的更多相关文章
- Linux C 字符串函数 sprintf()、snprintf() 详解
一.sprintf() 函数详解 在将各种类 型的数据构造成字符串时,sprintf 的强大功能很少会让你失望. 由于 sprintf 跟 printf 在用法上几乎一样,只是打印的目的地不同而已,前 ...
- [转载]Linux C 字符串函数 sprintf()、snprintf() 详解
一.sprintf() 函数详解 在将各种类 型的数据构造成字符串时,sprintf 的强大功能很少会让你失望. 由于 sprintf 跟 printf 在用法上几乎一样,只是打印的目的地不同而已,前 ...
- Linux DTS(Device Tree Source)设备树详解之二(dts匹配及发挥作用的流程篇)【转】
转自:https://blog.csdn.net/radianceblau/article/details/74722395 版权声明:本文为博主原创文章,未经博主允许不得转载.如本文对您有帮助,欢迎 ...
- Linux中redis安装配置及使用详解
Linux中redis安装配置及使用详解 一. Redis基本知识 1.Redis 的数据类型 字符串 , 列表 (lists) , 集合 (sets) , 有序集合 (sorts sets) , 哈 ...
- linux系统的任务计划crontab使用详解
linux系统的任务计划crontab使用详解 其实大部分系统管理工作都是通过定期自动执行某一个脚本来完成的,那么如何定期执行某一个脚本呢?这就要借助linux的cron功能了. 关于cron任务计划 ...
- Linux(centos)系统各个目录的作用详解
Linux(centos)系统各个目录的作用详解 文件系统的类型 LINUX有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码 ...
- linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)
linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ...
- 轻松学习Linux之Shell文件和目录属性详解
轻松学习Linux之Shell文件和目录属性详解 轻松学习Linux之理解Sitcky 轻松学习Linux之理解umask 轻松学习Linux之理解SUID&SGUID 本系列多媒体教程已完成 ...
- Linux进程实时IO监控iotop命令详解
介绍 Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦. iotop 是一个用来监视磁盘 I/O 使用状况 ...
随机推荐
- 【读书笔记《Bootstrap 实战》】4.企业网站
上一章有对个人作品站点进行一些优化.本章,轮到我们充实这个作品站点了,补充一些项目,从而展示我们的能力.换句话说,我们要构建一个相对复杂的企业网站主页. 下面有几个成功企业的网站: □ Zappos ...
- NOIP复习赛20161117
题目链接:http://files.cnblogs.com/files/candy99/%E9%A2%98%E7%9B%AE1117.pdf A n个等比数列求和公式(都感觉数列忘光了) %1e9+7 ...
- NOIP2011选择客栈[递推]
题目描述 丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号.每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一家咖啡店,每家咖啡店均 ...
- 2016中国·西安“华山杯”WriteUp- SeeSea
题目打包下载:https://yunpan.cn/ckyrKxHJDPAIN (提取码:bbaf) Web 1.签到(10) 扫码回复 hs_ctf拿flag, 套路题. flag_Xd{hSh_ct ...
- python基础之dict、set及字符
python基础之dict.set及字符串处理 本节内容 字典介绍及内置方法 集合介绍 字符串处理 1.字典介绍及内置方法 字典是python中唯一的映射类型,采用键值对(key-value)的形式存 ...
- Angular快速入门篇
简介 AngularJS 是一个为动态WEB应用设计的结构框架,提供给大家一种新的开发应用方式,这种方式可以让你扩展HTML的语法,以弥补在构建动态WEB应用时静态文本的不足,从而在web应用程序中使 ...
- 在线文档预览方案-office web apps续篇
上一篇在线文档预览方案-office web apps发布后收到很多网友的留言提问,所以准备再写一篇,一来介绍一下域控服务器安装,总结一下大家问的多的问题,二来宣传预览服务安装与技术支持的事情. 阅读 ...
- 琴弦文字 - jquery插件
这是一个基于jquery的琴弦效果插件. 以前曾经见过这个效果,有过尝试的想法但是当时技能点还不够. 前天在火车上偶然想起这个,认真思索了一下,一气呵成 :D 看来最近技能树点偏的不太远. 效果展示 ...
- 恢复 Windows 7 的“回到父目录”按钮
Windows 7 使用以来很多方面一直不习惯,特别是让我无比纠结的”回到父目录“ 按钮从资源管理器中消失了. 不能不说这是一个失败! 很多时候,Win 7 地址栏中自以为是的显示的很多层目录层次的面 ...
- jdbc的基本应用
JDBC-----英文全称--------Java Data Base Connectivity是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写 ...