【C语法学习】11

编程入门 行业动态 更新时间:2024-10-23 21:32:53

【C<a href=https://www.elefans.com/category/jswz/34/1770552.html style=语法学习】11"/>

【C语法学习】11

文章目录

  • 1 函数原型
  • 2 参数
  • 3 返回值
  • 4 比较
  • 5 示例

1 函数原型

fprintf():将格式化输出发送至指定流stream,函数原型如下:

int fprintf(FILE *stream, const char *format, ...)

2 参数

fprintf()函数参数包括三部分:

  1. 参数stream是一个指向FILE类型结构的指针;stream指定了fprintf()函数要写入的流,可以是文件流,也可以是标准输出流;当是文件流时,stream等于fopen()函数的返回值;当是标准输出流时,stream等于stdout;
  2. format :格式字符串,和printf()函数一致;
  3. … :参数列表,和printf()函数一致。

3 返回值

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

  1. 写文件成功,则返回写入的总字符数;
  2. 写文件失败,则返回负值。

C语言标准描述如下:

1. fprintf returns the number of bytes written. fwprintf returns the number of wide characters written. 
2. Each of these functions returns a negative value instead when an output error occurs. 

4 比较

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

  1. fprintf()函数将输出发送至指定流stream中;
  2. printf()函数将输出发送至标准输出流stdout中;
  3. 将fprintf()函数的参数stream指定为stdout,则fprintf()函数的功能和printf()函数的功能完全相同。

5 示例

使用fprintf()函数同时写文件和送显屏幕,示例代码如下所示:

void clear_stdin(void)
{while (getchar() != '\n');
}int main()
{FILE* fp = NULL;char filename[20] = { 0 };float data[5] = { 0 };int count = 0;printf("Enter 5 floating-point numerical values:>\n");for (count = 0; count < 5; count++){scanf("%f", &data[count]);}clear_stdin();printf("\n");printf("Enter a filename:>\n");gets(filename);if ((fp = fopen(filename, "w")) == NULL){printf("Failed to open file %s\n", filename);exit(1);}printf("\nPrint 5 floating-point numerical values:>\n");for (count = 0; count < 5; count++){fprintf(fp, "data[%d] = %f\n", count, data[count]);fprintf(stdout, "data[%d] = %f\n", count, data[count]);}fclose(fp);return 0;
}

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

文件内容如下图所示:

比较总结:文件内容和标准输出内容一致,符合" 将fprintf()函数的参数stream指定为stdout,则fprintf()函数的功能和printf()函数的功能完全相同"的说法。

注意事项

  1. scanf()函数在使用完之后需要清空标准输入流stdin缓冲区,否则会导致后续使用gets()函数获取文件名时发生错误;
  2. gets()函数在使用完之后无需清空标准输入流stdin缓冲区。

更多推荐

【C语法学习】11

本文发布于:2023-11-16 22:27:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1634446.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语法

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!