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

原来是这么写的:

#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. 论文图片误用?AI:这条路已被我堵死了
  2. 第五章(5)Libgdx应用框架之线程
  3. 四周第四次课(1月5日) 6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具...
  4. 机器学习之数学基础(四)~Lasso Regression回归, L1、L2 Regularization正则化, 回归问题中的损失函数
  5. 从 wiscKey 看 LSMtree 的不足
  6. bios是固定在微型计算机上的一块RoM,计算机硬件笔试试题
  7. HTML5 装饰Canvas中图形
  8. ubuntun系统mysql数据库同步_Ubuntu下MySQL主从同步配置步骤
  9. 软件工程专业指导4(方法)
  10. linux区别sata和sas,SAS与SATA之间的异同分析
  11. Kubernetes部分Volume类型介绍及yaml示例
  12. class文件如何在linux下打开_Linux下文件的三个时间属性
  13. c int转字符串_零基础如何学好Python 之int 数字整型类型 定义int()范围大小转换...
  14. Lattice的JTAG编程烧录
  15. 基于深度学习的银行卡号识别 卡号识别和分割
  16. 蔡学镛力荐,本人作品《Java虚拟机精讲》上市
  17. RSA/数字证书/签名原理详解
  18. 微信公众号发红包功能,现金红包、裂变红包接口
  19. MISC总结——隐写术(一)
  20. 快速翻译PDF文档的免费方法

热门文章

  1. 计算机组成原理笔记--简单五级流水线设计与性能
  2. 2. Vue 的应用方式
  3. 为什么招聘程序员不喜欢招女生
  4. 在做基于LBS应用的一些随笔
  5. sql注入(最简单的注入)
  6. 税收筹划你应该知道的详细过程
  7. 一个程序媛的内心独白
  8. 2021年高压电工考试题及高压电工考试内容
  9. 有关仓库仓位的管理问题
  10. SAAS、PAAS、IAAS近在手边