【C语法学习】9 - fputs()函数

1 函数原型

fputs():将str指向的内存空间中存储的字符串发送至指定流stream,函数原型如下:

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

2 参数

fputs()函数有两个参数str和stream:

  1. 参数str是一个指向char类型的指针,即str可以是一个字符指针变量名,也可以是一个字符数组名,甚至可以是一个字符串常量;
  2. 参数stream是一个指向FILE类型结构的指针;stream指定了fputs()函数要写入的流,可以是文件流,也可以是标准输出流;当是文件流时,stream等于fopen()函数的返回值;当是标准输出流时,stream等于stdout。

3 返回值

fputs()函数的返回值类型为int型:

  1. 输出成功,返回一个非负数值(vs2019中返回0);
  2. 输出失败,返回EOF。

C语言标准描述如下:

1. On success, returns a non-negative value.
2. On failure, returns EOF and sets the error indicator (see ferror()) on stream.

4 输出机制

fputs()函数发送字符到指定流stream,直至遇到空字符’\0’:

  1. 读取str指向的内存空间中存储的字符串;
  2. 发送空字符’\0’之前的所有字符,包括空格、制表符等字符。

5 比较

fputs()函数和puts()函数的工作原理类似,差异如下:

  1. fputs()函数将字符串发送到指定流stream;
  2. puts()函数将字符串发送到标准输出流stdout;
  3. 相比puts()函数,fputs()函数遇到空字符’\0’时不会将其转换为换行符’\n’;
  4. 可将fputs()函数的参数stream指定为stdout,则fputs()函数的功能和puts()函数的功能基本相同(差异见第3点对于空字符’\0’的处理上)。

问题思考:为什么fputs()函数不会将空字符’0’转换为换行符’\n’ ?

个人理解:fputs()函数主要用于写文件,如果想在文件中换行,写入文件的字符串必须包含换行符’\n’。

6 示例

6.1 示例1

比较puts()函数和fputs()函数对空字符’\0’的处理,示例代码如下所示:

int main()
{
   //
   int ret = 0;
   ret = puts("hello world");
   printf("Return value is %d\n", ret);
   //
   ret = fputs("hello world\n", stdout);
   printf("Return value is %d\n", ret);

   return 0;
}

代码运行结果如下图所示:

在这里插入图片描述

6.2 示例2

fputs函数写文件,示例代码如下图所示:

int main()
{
   //
   char str1[30] = "hello world\n";
   char str2[30] = "i love you xduryan\n";
   FILE* fp;
   //
   if ((fp = fopen("1.txt", "w")) == NULL)
   {
      printf("Failed to open file\n");
      exit(1);
   }
   //
   fputs(str1, fp);
   fputs(str2, fp);
   //
   fclose(fp);

   return 0;
}

代码运行结果如下图所示:

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值