一、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. 初识javascript变量和基本数据类型

    1.1首先,学习使用firebug控制台.设置一下firefox 中的配置选项,以便使控制台中的javascript警告更为严格...以方便我们更好的找出程序中不必要的bug. 1. 在火狐浏览器fi ...

  2. java并发编程学习:如何等待多个线程执行完成后再继续后续处理(synchronized、join、FutureTask、CyclicBarrier)

    多线程应用中,经常会遇到这种场景:后面的处理,依赖前面的N个线程的处理结果,必须等前面的线程执行完毕后,后面的代码才允许执行. 在我不知道CyclicBarrier之前,最容易想到的就是放置一个公用的 ...

  3. flask+sqlite3+echarts3 系统监控

    总的而言,分三部分: 1.监控器(monitor.py): 每秒获取系统的四个cpu的使用率,存入数据库. 2.路由器(app.py): 响应页面的ajax,获取最新的一条或多条数据. 3.页面(in ...

  4. 备忘:spring jdbc事务代码 mybatis, nhibernate

    http://files.cnblogs.com/files/mikelij/mymavenMar1.rar

  5. 图片轮播图插件的使用 unslider!!!

    1.百度图片轮播图unslider,第一个就会出现jquery unslider轮播图,点击进去,下载网站提供的文件,解压,内部有我们需要使用的各种js,图片等. 2.在自己的eclipse或者int ...

  6. 基于Spring4+Hibernate4的通用数据访问层+业务逻辑层(Dao层+Service层)设计与实现!

    基于泛型的依赖注入.当我们的项目中有很多的Model时,相应的Dao(DaoImpl),Service(ServiceImpl)也会增多. 而我们对这些Model的操作很多都是类似的,下面是我举出的一 ...

  7. IE下a标签后面的span元素向右浮动后错位

    错误原因span放在了a标签之后 正确写法是放在之前 如下: <li><span>2016-07-29</span><a href="#" ...

  8. NSUserDefaults:熟悉与陌生(转)

    转载自:http://swiftcafe.io/2016/04/04/nsuserdefaults/?hmsr=toutiao.io&utm_medium=toutiao.io&utm ...

  9. 分布式服务框架dubbo原理解析(转)

    libaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo.hsf),jms消息服务(napoli.notify),KV数据库(tair)等.这个框架/工具/产品 ...

  10. AutoVFL(适配)

    1.添加约束(系统) a.一个约束(上下左右) +(instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)att ...