今天看到自己以前在工程中写的一个程序,突然惊醒梦中人,哎,当时感觉还很不错呢,现在感觉好愚蠢啊. 原工程中涉及多文件,为了叙述简便,下面简化程序.

原来是这么写的:

#include <stdio.h>void saveData(int n)
{FILE *fp = fopen("data.txt", "a");fprintf(fp, "%d ", n);fclose(fp);
}int main()
{int i;for(i = 0; i < 10000; i++){saveData(1);}return 0;
}

saveData函数被大量调用到. 上面这个程序大概要运行5s. 而且每次跑一下程序后,data.txt中的数据都会累加,容易产生错误,只有用程序删除data.txt方可.

现在,看到上面这个程序,感觉好笑啊,修改如下:

#include <stdio.h>void saveData(FILE *fp, int n)
{fprintf(fp, "%d ", n);
}int main()
{FILE *fp = fopen("data.txt", "w");int i;for(i = 0; i < 1000000; i++){saveData(fp, 1);}fclose(fp);return 0;
}

或者:

#include <stdio.h>FILE *fp;void saveData(int n)
{fprintf(fp, "%d ", n);
}int main()
{fp = fopen("data.txt", "w");int i;for(i = 0; i < 1000000; i++){saveData(1);}fclose(fp);return 0;
}

修改后,即便循环次数为1000000次,程序也是眨眼之间就运行完了. 而且不会再每次跑程序时使data.txt中的数据累加,也就不需要删除data.txt文件.

难怪以前程序跑那么久呢,原来频繁地打开和关闭文件是如此地耗时!

好愚蠢的C程序啊!(也谈费时的文件打开与关闭)相关推荐

  1. 文件打开不关闭程序会输出吗_干货!很多资深用户都不知道的10个BOOX阅读器使用技巧,很实用!...

    近期我们在公众号后台.知乎.贴吧等平台,都收到了很多用户的关于阅读器使用上的一些问题咨询,比如如何设置屏保.如何安装字体.如何自定义笔记模板.如何去除PDF水印等. 今天,我们挑了10个大家最常咨询的 ...

  2. 我为什么做程序猿訪谈录

    程序猿訪谈录(it3q.com),是我的第一个创业项目,选择这个方向是由于做这件事,有自己的兴趣,更有价值. 从事IT行业的群体,包含我自己,朋友和同事的印象大部分是一个IT屌丝,我周边的同事也以为我 ...

  3. 周鸿袆:从程序员创业谈起

    离开雅虎中国后的周鸿袆现在的身份是IDG公司的投资合伙人,手中拿着五亿美金用来做风投的他自然对创业有着说不完的话题.由于周鸿袆出身程序员,也一直是本刊的忠实读者,他希望一方面站在投资商的角度,同时以一 ...

  4. 对话周鸿袆:从程序员创业谈起

    离开雅虎中国后的周鸿袆现在的身份是IDG公司的投资合伙人,手中拿着五亿美金用来做风投的他自然对创业有着说不完的话题.由于周鸿袆出身程序员,也一直是本刊的忠实读者,他希望一方面站在投资商的角度,同时以一 ...

  5. 程序员面试谈薪资的6大技巧

    程序员面试谈薪资的6大技巧 提起薪资,我们作为求职者都想多要点,作为程序开发者 更需要一个好的敲门,身怀绝技,  如果不会谈薪 ,那就不就亏大了吗? 原文来自程序人生: http://gad.qq.c ...

  6. 服务器不知别内存_程序优化浅谈服务器实现高并发的原理

    我们每天刷手机都会接收到各种各样的信息,看到这篇文章时,不知大家有没有思考过,这些信息是如何组织,然后通过服务器发送给我们的呢? 其实也很简单,不就是一条一条请求嘛,服务器根据不同的请求分别去不同的数 ...

  7. 情感干货!和程序员(猿)谈恋爱,是一种什么体验呢?

    我们以为程序员个个又宅又高冷,在他们面前,我们好像都是他们眼里"无知的人类",那和程序员们谈恋爱,到底是一种什么体验呢? 1.很宅,很二次元 我在上学的时候,见过很多情侣约会都是去 ...

  8. 从程序员创业谈起--对话周鸿祎

    离开雅虎中国后的周鸿祎现在的身份是IDGVC的投资合伙人,做风险投资的他自然对创业有着说不完的话题.由于周鸿祎出身程序员,也一直是本刊的忠实读者,他希望一方面站在投资商的角度,同时以一种过来人的身份来 ...

  9. python语言源程序文件类型_浅谈Python的文件类型

    Python的文件类型主要分为3种:源代码(source file).字节码(byte-code file).优化的字节码(optimized file).这些代码都可以直接运行,不需要编译或者连接. ...

最新文章

  1. c++ 类数组_输入输出流IO体系及常用类关系结构(精要收藏)
  2. 桌面计算机休眠快捷键,如何快速建立Win 7桌面一键休眠快捷方式
  3. 5.用户APC执行过程
  4. 为什么我们总是喜欢选择差不多的价格
  5. Android之ndk之用arm-linux-androideabi工具通过地址找到具体哪里崩溃
  6. 全部省市县数据库(SQL脚本)以及简单递归查询
  7. TensorFlow实现去噪自编码器(Denoising Autoencoder)
  8. 获取div相对文档的位置
  9. python 管道游戏_用Python做flybird游戏
  10. 基于HPC场景的集群管理系统(slurm系统初相识)
  11. 编写一个程序,将两个字符串连接起来,不要用strcat 或 strncat 函数。
  12. ptp输出内容包含什么_04-PTP命令
  13. [详细] 搭建hexo博客并部署阿里云服务器
  14. java jwt登录_图解JWT如何用于单点登录
  15. 【List】个人 常用学习工作软件清单
  16. Shema与数据类型优化
  17. 2021年美赛B题目思路(仅供参考)——AHP
  18. java Object class分析
  19. centos6下安装配置NFS
  20. python的ppt报告_Python学习报告.ppt

热门文章

  1. 如何把word中的图片怎么导出来呢?
  2. 2020年杭州区块链产业白皮书-20210224.pdf.
  3. 30行代码-使用预训练模型实现中英文翻译
  4. 【zoj 3547】【zoj 3548】8.17模拟赛
  5. step7建立冗余服务器站点,WinCC客户端与冗余服务器配置步骤
  6. 面试题,你多久能到岗
  7. 我用C++的理由——关于C和C++的选择
  8. 美的集团计算机综合面试群面,世界500强美的集团群面经验分享
  9. “5G+4G”智能融合通信设备、聚合加密、安全通信
  10. Request 介绍及使用。