一、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() 详解的更多相关文章

  1. Linux C 字符串函数 sprintf()、snprintf() 详解

    一.sprintf() 函数详解 在将各种类 型的数据构造成字符串时,sprintf 的强大功能很少会让你失望. 由于 sprintf 跟 printf 在用法上几乎一样,只是打印的目的地不同而已,前 ...

  2. [转载]Linux C 字符串函数 sprintf()、snprintf() 详解

    一.sprintf() 函数详解 在将各种类 型的数据构造成字符串时,sprintf 的强大功能很少会让你失望. 由于 sprintf 跟 printf 在用法上几乎一样,只是打印的目的地不同而已,前 ...

  3. Linux DTS(Device Tree Source)设备树详解之二(dts匹配及发挥作用的流程篇)【转】

    转自:https://blog.csdn.net/radianceblau/article/details/74722395 版权声明:本文为博主原创文章,未经博主允许不得转载.如本文对您有帮助,欢迎 ...

  4. Linux中redis安装配置及使用详解

    Linux中redis安装配置及使用详解 一. Redis基本知识 1.Redis 的数据类型 字符串 , 列表 (lists) , 集合 (sets) , 有序集合 (sorts sets) , 哈 ...

  5. linux系统的任务计划crontab使用详解

    linux系统的任务计划crontab使用详解 其实大部分系统管理工作都是通过定期自动执行某一个脚本来完成的,那么如何定期执行某一个脚本呢?这就要借助linux的cron功能了. 关于cron任务计划 ...

  6. Linux(centos)系统各个目录的作用详解

    Linux(centos)系统各个目录的作用详解 文件系统的类型 LINUX有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码 ...

  7. linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)

    linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ...

  8. 轻松学习Linux之Shell文件和目录属性详解

    轻松学习Linux之Shell文件和目录属性详解 轻松学习Linux之理解Sitcky 轻松学习Linux之理解umask 轻松学习Linux之理解SUID&SGUID 本系列多媒体教程已完成 ...

  9. Linux进程实时IO监控iotop命令详解

    介绍 Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦. iotop 是一个用来监视磁盘 I/O 使用状况 ...

随机推荐

  1. 轻松搞懂WebService工作原理

    用更简单的方式给大家谈谈WebService,让你更快更容易理解,希望对初学者有所帮助. WebService是基于网络的.分布式的模块化组件. 我们直接来看WebService的一个简易工作流程: ...

  2. UVA11324 The Largest Clique[强连通分量 缩点 DP]

    UVA - 11324 The Largest Clique 题意:求一个节点数最大的节点集,使任意两个节点至少从一个可以到另一个 同一个SCC要选一定全选 求SCC 缩点建一个新图得到一个DAG,直 ...

  3. SpringMVC 返回json

    1.导入jackson的jar包 2.在方法体上加上@ResponseBody /** * 得到ProType的typeId,typeName列表 * 返回json * */ @RequestMapp ...

  4. u3d_Shader_effects笔记6 第二章 animating sprite

    1.前面的心情 上班看shader我也是醉了.写完这篇看代码去了,不过看着看着恐怕就会困.... 还有就是上天,我该怎么做,下一步,大懒: 2.参考源头 http://blog.csdn.net/ca ...

  5. idea快捷键(自用)

    idea快捷键(自用) 1.比如输入eclipse下面的main,sysout等,在idea里面同样可以实现,如下: sysout(sout 按tab),main(psvm按tab),具体可按照ctr ...

  6. openstack上创建vm实例后,状态为ERROR问题解决

    问题说明:在openstack上创建虚拟机,之前已顺利创建了n个centos6.8镜像的vm现在用ubuntu14.04镜像创建vm,发现vm创建后的状态为ERROR! 1)终端命令行操作vm创建 [ ...

  7. jQuery动画效果animate和scrollTop结合使用实例

    CSS属性值是逐渐改变的,这样就可以创建动画效果.只有数字值可创建动画(比如 "margin:30px").字符串值无法创建动画(比如 "background-color ...

  8. Win7下mysql root账户登录提示:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)解决方案

    ERROR 1045 (28000): Ac-- password: YES)这个意思是密码不正确,那就修改密码: 如果你是服务器是 windows xp/2000/2003/nt 都可以使用这个方法 ...

  9. Linux基本命令(一)

    Linux基本命令 编辑器 vim编译器 Gnu工具链-gcc调试器 GDB操作系统是用C来写的 系统编程 (核心骨架 80%) 文件I/O 文件系统 进程{ 进程控制原语.进程间通信.进程间关系 信 ...

  10. 【USACO 3.1】Humble Numbers(给定质因子组成的第n大的数)

    题意:给你k(≤100)个质数,求质因子只包含它们的第n大的数. 题解: 方法一:维护一个数组,一开始只有给出的质数在里面,用每个质数去乘以数组中每个数,然后归并排序,长度保留到n,一轮接一轮,直到乘 ...