puts和fputs函数及其区别,C语言puts和fputs函数详解

与 gets 函数一样,对于 puts 函数,同样建议使用 fputs 函数来代替 puts 函数。如下面的示例代码所示:

int main(void)

{

char buffer[11];

fgets(buffer,11,stdin);

fputs(buffer,stdout);

return 0;

}

其中,puts 函数的原型如下所示:

int puts(const char *str);

我们知道,puts 函数主要用于向标准输出设备(屏幕)写入字符串并换行,即自动写一个换行符(’\n’)到标准输出。理论上,该函数的作用与“printf("%s\n",str);”语句相同。但是,puts 函数只能输出字符串,不能进行相关的格式变换。与此同时,它需要遇到 null(’\0’) 字符才停止输出。因此,非字符串或无 null(’\0’) 字符的字符数组最好不要使用该函数打印,否则无法正常结束。如下面的代码所示:

int main(void)

{

char str[] = {'H','E','L','L','O'};

puts(str);

return 0;

}

在上面的示例代码中,因为字符数组 str 在结尾处缺少一个 null(’\0’) 字符(也就是说它不是一个严格意义上的字符串)。因此,在调用 puts 函数的时候,程序将不知道什么时候停止输出,从而导致输出结果未定义。运行结果如下图所示:

图 1 示例代码的运行结果(Microsoft Visual Studio 2013)

正确的做法是应该在字符数组 str 的结尾处添加一个 null(’\0’) 字符,如下面的示例代码所示:

char str[] = {'H','E','L','L','O','\0'};

fputs 函数

函数的函数原型如下所示:

int fputs(const char *str, FILE *stream);

相对于 puts 函数,fputs 函数用来向指定的文件写入一个字符串(不换行)。当然,也可以使用 stdout 作为参数进行输出显示(它同样需要遇到 null(’\0’) 字符才停止输出),如下面的代码所示:

int main(void)

{

char str[] = {'H','E','L','L','O','\0'};

fputs(str,stdout);

return 0;

}

其运行结果如下图所示:

图 2 示例代码的运行结果(Microsoft Visual Studio 2013)

fputs主要功能

当然,fputs 函数主要用于对指定文件进行写入操作,如下面的示例代码所示:

int main(void)

{

FILE *fp=NULL;

fp=fopen("myfile.txt","wb");

if(fp == NULL)

{

printf("不能够访问该文件.\n");

exit(1);

}

fputs("this is a test", fp);

fclose(fp);

fp=NULL;

return 0;

}

运行上面的示例代码,文件“myfile.txt”会被写入一行“this is a test”字符串。

与 fgetws 一样,C99 同样也提供了 fputs 函数的宽字符版本 fputws,其函数的一般原型如下面的代码所示:

int fputws(const wchar_t * restrict s, FILE * restrict stream);

c语言中puts的作用,puts和fputs函数及其区别,C语言puts和fputs函数详解相关推荐

  1. 以下关于c语言中static和const,c语言中static const作用

    c语言中static const作用 (2012-06-21 07:51:08) 标签: it 关键字static: 1. 在函数体内,一个被声明为静态的变量在这一个函数被调用的过程中维持其值不变. ...

  2. C语言中static的作用及C语言中使用静态函数有何好处

    转自:http://www.jb51.net/article/74830.htm 在C语言中,static的作用有三条:一是隐藏功能,二是保持持久性功能,三是默认初始化为0. 在C语言中,static ...

  3. php的cookie变量作用,PHP语言中cookie的作用

    PHP语言中cookie的作用 时间:2015-11-9 Cookie的概念最早是由Netscape在1994年提出来的,它是保存在浏览器中的小信息包,更确切地说,Cookie是保存在客户端硬盘里的, ...

  4. int在c语言中的作用,C语言中int,Uint,uint16等有什么区别以及用处

    C语言中int,Uint,uint16等有什么区别以及用处.在C中,既然有了int,为什么还要有uint?特别是uint16,uint32等又有什么用?他们有什么区别?" --------- ...

  5. c语言中a-这个作用是什么,c语言中a*=y什么意思?

    问: C语言中c=a 答: 其中:a 问: &在c语言中是什么意思 答: &可以作为"按位与"或是"取地址"运算符 下面是作为两种用法的介绍: ...

  6. C语言中,#include的用法:#include 和 #include区别

    C语言中,#include的用法:#include "" 和 #include<>区别 采用 " ":依次搜索当前目录.包括/I编译开关的路 ...

  7. c语言char数组和short数组的区别,详解C语言中Char型指针数组与字符数组的区别

    详解C语言中Char型指针数组与字符数组的区别 详解C语言中Char型指针数组与字符数组的区别 1.char 类型的指针数组:每个元素都指向一个字符串,指向可以改变 char *name[3] = { ...

  8. Go语言中的fmt.Print, fmt.Printf, fmt.Println的区别和使用场景

    Go语言中的fmt.Print, fmt.Printf, fmt.Println的区别和使用场景 fmt 包的介绍 fmt.Print === 原样输出 fmt.Printf === 格式输出 fmt ...

  9. c语言中return的作用_C语言入门基础整理

    学习计算机技术,C语言可以说是必备的,他已经成为现在计算机行业人学习必备的,而且应用也是十分的广泛,今天就来看看拥有几年c语言工作经验的大神整理的C语言入门基础知识,没有学不会,只有不肯学. 结构化程 ...

  10. c语言中const的作用面试,C语言const关键字作用

    C语言中const代表着"不可变",基本和常量一样不可修改,但是应用场景不一样. 一.应用在变量 const char a='A'; a='B';  //错误,变量a的值不可以修改 ...

最新文章

  1. 学完Java后找工作难吗?需要满足什么条件?
  2. spring 同时配置hibernate and jdbc 事务
  3. [Java基础]复制文件的异常处理try...catch...finally的做法
  4. golang实现聊天室(一)
  5. jmeter之使用代理录制脚本
  6. List增删元素后size大小发生变化带来的影响、Stream流操作、Lambda表达式
  7. 和电商有关的词语_关于电商的一些词
  8. 【Windows】VMware虚拟机安装Windows 10 教程
  9. 我的职业梦计算机软件,我的职业梦作文1000字
  10. 敌兵布阵 HDU - 1166
  11. vue中如何使用h5自定义标签?
  12. 微信公众平台之模拟登录
  13. 一起来找:程序员必去的社区与网站
  14. 达梦常见故障模拟与恢复
  15. 直插电阻功率和尺寸关系
  16. 程序员撩妹专用~~~好看的H5立方体创意相册,资源免费!!!程序员送给女孩子的礼物,非常适合送给小姐姐!
  17. 1、junit学习之junit的基本介绍
  18. 如何进行内测分发?蒲公英内测托管平台使用教程
  19. Linux基本的常用命令
  20. 数学建模--图与网络(1)

热门文章

  1. Springer-Verlag免费下载图书400本
  2. ubuntu16.04安装Preempt RT实时内核
  3. 如何解决ABBYY FineReader 12识别字体字符错误的问题
  4. C#学习纪要(8):7月17日
  5. 国务院:关于促进云计算创新发展 培育信息产业新业态的意见
  6. 无代码生产新模式探索
  7. 无线传输 android下载,无线文件传输 WiFi File Transfer
  8. 终其一生只是个普通人,你会后悔吗?
  9. 有关5G技术的认知与感想
  10. 使用Java程序接口备份数据库的思路与实现