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 使用状况 ...
随机推荐
- TCP/IP四层模型和OSI七层模型
TCP/IP四层模型 TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对 ...
- 洛谷P1262 间谍网络[强连通分量 BFS]
题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报 ...
- POJ2677 Tour[DP 状态规定]
Tour Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4307 Accepted: 1894 Description ...
- AC日记——I Hate It 洛谷 P1531
题目背景 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 题目描述 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的 ...
- python高级之函数
python高级之函数 本节内容 函数的介绍 函数的创建 函数参数及返回值 LEGB作用域 特殊函数 函数式编程 1.函数的介绍 为什么要有函数?因为在平时写代码时,如果没有函数的话,那么将会出现很多 ...
- 字符加密Cipher(bzoj 1031)
Description 喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法 :把需要加密的信息排成一圈,显然,它们有很多种不同的读法.例如下图,可以读作 ...
- win7 装了VB虚拟机 开始挺好用 后来突然就打不开了 提示如下错误:(如图)创建 COM 对象失败.
创建 COM 对象失败. 应用程序将被中断. Start tag expected, '<' not found. Location: 'C:\Users\Mike/.VirtualBox\Vi ...
- cosbench read异常解决办法。 Unable to verify integrity of data download. Client calculated content hash didn't match hash calculated by Amazon S3. The data may be corrupt.
问题:cosbench read测试failed 报错如下 Cosbench v0.4.2.c4 against Ceph (Hammer) / radosgw / HAproxy's HTTP en ...
- VS使用技巧——统计代码行数
通常为了统计一个文件或者一整个解决管理方案中代码行量,可能会选择定位来获取行量,但是当文件尤其大时,传统方式就不行了,这里推荐使用正则表达式搜索统计,可以快速获取目标文档的总代码量. Tips: ct ...
- 这些年MAC下我常用的那些快捷键
Command + H:隐藏窗口 Command + M:最小化窗口 Command + N:新建 Command + O:打开 Command + S:保存 Command + shift+S:另存 ...