说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

初学编程,请教个小问题

编辑:说三道四文库 发布时间:2017-09-27 04:07
HTML文档下载 WORD文档下载 PDF文档下载
小弟我刚学了一个多月C语言,最近编了一个文件分割器,碰到了点麻烦,就是找不到文件末尾(反映在非纯文本文件上)。用EOF的方法,往往读到几K就退出,查了下知道为了读取二进制文件,有个feof(fp)的函数,但是居然也没有用,如何解决这个问题,还望大虾指教!


我的filecopy函数代码如下:

int filecopy(FILE *fpin,FILE *fpout,unsigned long int maxlen)    
/*拷贝fpin到fpout,如果到规定大小则退出,指针指向下一个字节*/
{ int c,flag;
unsigned long int i=0;

while((c=getc(fpin))!=EOF){
putc(c,fpout);
                 ++i;
if(i>maxlen-2){
flag=1;
goto end;
}
}
flag=0;
end:
return flag; /*如果文件没有结束,返回1,否则返回0。*/

}

maxlen?
maxlen是分割后文件的长度。
/* EOF.C: This program reads data from a file
 * ten bytes at a time until the end of the
 * file is reached or an error is encountered.
 */
#include <io.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
void main( void )
{
   int  fh, count, total = 0;
   char buf[10];
   if( (fh = _open( "eof.c", _O_RDONLY )) == - 1 )
   {
        perror( "Open failed");
        exit( 1 );
   }
   /* Cycle until end of file reached: */
   while( !_eof( fh ) )
   {
      /* Attempt to read in 10 bytes: */
      if( (count = _read( fh, buf, 10 )) == -1 )
      {
         perror( "Read error" );
         break;
      }
      /* Total actual bytes read */
      total += count;
   }
   printf( "Number of bytes read = %d\n", total );
   _close( fh );
}
可以看看这个。
谢谢!这样真的可以读完文件,但是能不能烦劳讲解一下?我有很多看不明白的地方。

#include <io.h>
#include <fcntl.h>     //这两个头文件分别包含了什么函数?io.h和stdio.h的不同?
#include <stdio.h>
#include <stdlib.h>
void main( void )
{
   int  fh, count, total = 0;
   char buf[10];
   if( (fh = _open( "eof.c", _O_RDONLY )) == - 1 )   //_open的调用方法?为什么它  返回的是int值?这个fh代表的是什么?_O_RDONLY是什么意思?
   {
        perror( "Open failed");
        exit( 1 );
   }
   /* Cycle until end of file reached: */
   while( !_eof( fh ) )           //同上,不太明白fh的意思,_eof和feof有什么不一样?
   {
      /* Attempt to read in 10 bytes: */
      if( (count = _read( fh, buf, 10 )) == -1 )   //_read的意思,调用方法,返回值
      {
         perror( "Read error" );
         break;
      }
      /* Total actual bytes read */
      total += count;
   }
   printf( "Number of bytes read = %d\n", total );
   _close( fh );
}

这里的很多函数,包括头文件我的书(教材《C程序设计》(谭浩强)、《The C Programming Language》(K&R))里都没有,这些是不是ANSI标准的?是不是标准的C语法(或是C++)?我刚学C语言,不想把概念搞混淆了,其实现在我已经挺糊涂了。:)


又出了点问题,我在用这段代码改编一个实验性程序的时候,发现读出的数据有些不对,比如我有一个4.65M的a.rm,读出后为4.66M,播放器不能播放。请问问题何在。

#include <io.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
void main( void )
{
   int  fin,fout, count, total = 0;

   char buf[10];
   if( (fin = open( "cs.rm", _O_RDONLY )) == - 1 )
   {
        perror( "Open failed");
        exit( 1 );
   }
   if( (fout = open( "a.rm", _O_CREAT | _O_WRONLY )) == - 1 )
   {
        perror( "Open failed");
        exit( 2 );
   }

   /* Cycle until end of file reached: */
   while( !eof( fin ) )
   {
      /* Attempt to read in 10 bytes: */
      if( (count = read( fin, buf, 10)) == -1 )
      {
         perror( "Read error" );
         break;
      }
      /* Total actual bytes read */

  total += count;
  _write( fout, buf, 10);       /* Copy buffer to fout*/
   }
   printf( "Number of bytes copied = %d\n", total );

   close( fin );
   close( fout);
}

up
难道没有人回答吗?!我又碰到一个问题,同样的程序,我将buf设成不同的容量为什么会得到不同的total值?比如buf[10]的时候total==47000,buf[200]的时候total==3XXXX
up
你挺厉害的嘛,才学了一个月就学会这么多呀,我学了一个月才刚刚能看懂别人编的程序,你现在就能写了,叫我好声佩服,你在哪里学的,我们可以交个朋友吗?  我的QQ182278155
果然厉害.
并不是说厉害,学习就是要写程序的呀,我喜欢一边写一边进行学习,这样容易发现问题,学到东西。还有,多看点书,我都是两三本书一起看。最后,我原来的程序是我自己写的,后来那个(第六贴)的是MSDN上的:)我自己改了改,看起来要比我原来那个好多了:)
上面用到的好象是WINDOWS的一些API,具体的你可以去查一下WINDOWS API 的一些书籍
初学者too,UP一下!~
我希望用C就能解决这个问题,如果用到API的话,我的问题岂不是没有意义了?我就是想学到点东西,而且我现在离解决很进了……(只是在拷贝的时候多了0.01M呀……)就差哪位高手点拨一下了……而且微软的东西太没保障了,今天学了,明天他推出一个全新的东西就把你以前的全推翻了……还是学C比较好,通用性强,又可以为学别的语言打下很好的基础
制作主窗口显示前的版权窗口-Delphi资料 状态条插入可视控件-Delphi资料 做动态显示的控件-Delphi资料 做一个OpenGL控件-Delphi资料 Api函数列表——与打印相关-Delphi资料 Delphi 5快速创建控制面板程序 Delphi 编写Windows NT服务 Delphi 的 分 发 工 具 ─ ─InstallShield Delphi 关于系统编程中的技巧 Delphi3如何调用Excel Delphi5.0中的函数调用模式 用Delphi 编 程 时 如 何 利 用 线 程 Delphi的8个技巧 delphi函数参考手册 DELPHI键盘常用快捷键汇总(DEFAULT 和CLASSIC) Delphi实现自动切换输入法 Delphi使用汇编 Delphi系 统 提 示 信 息 的 汉 化 DELPHI下的多线程程序设计 Delphi下汉字输入法的编程及使用 在Delphi与C++之间实现函数与对象共享 DELPHI中处理时间 Delphi中的INI文件编程 DELPHI中的消息处理机制 Delphi中对目录拷贝、删除和搬移的操作 Delphi中任务栏状态区的编程 Delphi中如何处理2000年问题 Delphi中如何实现系统权限的设置 Delphi中异常的截获及其个性化处理 Delphi自定义消息应用一例 Delphi5中资源文件的创建和使用 认识的MM,感觉还可以,今天对我说 降工资,工资不够交房租,是什么意思呀 请哪里有DB2 UDB 7.2 for AIX版下载(问题解决马上给分) 数据结构和C++ songzx66版竹去哪了?有为版竹无辜删除帖子,你为什么不管? 插入数据到数据表中,SQL SERVER中只可以用查询分析器吗?我想用企业管理器来实现,有什么方法吗? 考程的优秀参考书,观者有份! 请管理员出面解释! 是谁向我要树型菜单代码的? IT生涯 求助 请有兴趣的人们评价一下B.Strostrup的TC++PL吧。 请问一个问题?? 高手来啊高手来!怎么把高手的数据库放到treeview里面去? 删不掉SQL server怎么办啊? EXCEL工作表的页码问题 帮忙一下:多开几个线程同时发送数据能提高网络传输速度吗?通过internet,用TCP/IP 关于和AUTOCAD R14或2000的支持!向高手请教! 我们与外国人的不同之处 碰到一件奇怪的事情,不知怎么会事,真让人着急 Windows server 2003支持红外接口吗? 将*.html文件转为*.txt文件之后为什么打不开文本啊!! 虚心请教!!! 水园版竹为何封杀本王账户? 如何从QQ信息报文中得以其中的QQ号码呢? Install Shield安装问题 asp取本页面的text筐中的数据 datagrid控件在绑定了一个数据源dataset后,当dataset中的内容改变后(数据结构发生变化) 请帮忙推荐一款电子阅读器` 用ATL作的控件属性保存问题非常有趣来看看吧 请问access里的自增变量的值是什么类型的? 请各位帮忙! 请问一个问题?? 1、媒体播放速度不正常;2、怎样支持多语言? 我的困惑 關于SQL SERVER連接的問題 datagrid中用超链列传递参数出现的问题????waiting。。。。。 IBM有没有提供B/S的DB作示例供下载? 将*.html文件转为*.txt文件之后为什么打不开文本啊!! 虚心请教!!! 众爱卿可还记得本王吗? 如何根据身份证信息提取生日信息?求相关SQL语句 高分请教WIN2000中超难问题(分不够可以加)! 一个.h及.c可以被两个Project共用,不过我想在另一个Project中更改,但有时会出现提示"不能存储"等,有时.h文件被自动删除..怎么办? 怪现象:Windows 还未启动就黑屏 关于CRecordSet的问题 很菜的问题,希望不要见笑! 关于cookies的问题, 请教各位了. 很急!!!!!! 我日,天天见鬼,我用wsdl做了个webservice的代理类,把文件包含到webapplication中,debug的时候竟然说namespace System.Web.Services 本王对ISharp版竹表示最遗憾的同情和失望 哪位大哥能解决VB打开picture对话框时---蒸发的问题? 为什么我用jsp访问不到bean的属性???[100分,在线结帖] 为什么要“导入COM对象到.Net”? 请问我是不是被攻击了? jack汉文是什么 世上本无事,庸人自扰之,这句话还有没有上下文, 平抛运动的合速度方向会是竖直吗?如题,物体在水平方向始终有速度,那么在不计空气阻力的情况下,最终物体的竖直分速度远大于水平速度,因此可以近似看作物体的合速度为竖直方向,这样想 有个电影名叫jack,中文名叫什么 什么样的课是优质课 平抛运动 垂直速度与质量有关吗Vy=gt 这条公式里面的g跟质量有关吗 是Vy=mgt吗?参考答案直接Vy=gt 而我们老师写的是Vy=mgt jack walk的中文什么意思 新课程标准下优质课该怎么评——观摩浙江省思想政治优质课评比活动有感 在盐水中盐占盐水的1/12,在40克清水中,应该加入()克盐 如何感受自尊带来的快乐? 哪里可以小学数学优质课观摩 用夹逼定理证明lim (sin nx)/n=0n趋于无限大.对任何实数x均成立. 怎样养成豁达开朗的性格 100万有多大——东庐中学周晓燕—初中数学优质课观摩课集锦. 人小(XXXX)学浅前后与中间、后面都是成语 政治题怎样才能感受到自尊的快乐 是七年级下册的一道政治题 . - - .班里同学没义气 . 世上本无事 庸人自扰之出自何处世上本无事 庸人自扰之出自哪里 用含盐分别为百分之16和百分之40的盐水混合成含盐百分之32的盐水624千克,需含盐百分之四十的盐水多少千克?快 急 为什么会发生地震?地震可以预报吗? 世上本无事庸人自扰之出自哪里,谁说的? 平抛运动中,什么是竖直分速度与水平分速度?怎么样理解 竖直方向的运动的速度在改变啊.那么竖直分速度是算平均速度,还是落地竖直的即时速度. 罗盘上的方位为什么是“上北下南左东右西”? lim x趋于无穷,xsin(2x/1+x^2)= 现将含盐率百分之16和百分之40的两种盐水混合后成百分之32的盐水312kg,需要含盐百分之16的盐水几千克? 罗盘里的东西是怎么标的?地理上是上北下南左西右东,可罗盘里标的是上北下南,左东右西,为啥? 试说明多项式(4x²-3x+1)+(4x²-3x+2y²)—(8x²—6x+2y²)的值与x的值无关.马上,说的出原因, 把含盐分别为百分之十六和百分之四十的盐水混合成含盐百分之三十二的盐水312千克,那么需要含盐百分之四十的盐水多少千克? 将中文翻译成英文 一个活泼开朗的女生,我的身高是班里女生中倒数,我们几个每天在一起玩,这就是我. 攀登作文600字 为什么平抛运动的飞行时间由竖直高度决定RT 再有 其实水平位移的时间也是等于运动时间的为什么规定由竖直高度决定?纠结啊 急需一篇作文,关于“假如你是一个班主任,怎么管理班上” 写“攀登”的作文600字以上 平抛运动中水平速度不变,竖直速度变大,那和速度怎么变啊刚上完这课还有点晕...比如说一个小球以V0平抛撞在一个有倾斜角的斜坡上,求撞击的速度,我看到是用初速度和倾斜角算的.可竖直方 我想明天的男子四百米接力赛将是激动人心的 用英语翻译 求作文【攀登路上】要求绝对高分作文!语言精辟,无错别字,内容新颖! 以攀登为题的作文!急内容以“攀登”为话题;字数500字左右;写登山后的感受、或人生观... 物体在倾角为45°的斜面顶端水平抛出,做平抛运动,什么时候水平位移会等于竖直位移? 求作文《攀登》.30分求作文以攀登为主题,600字,注意:要求从社会阴暗面写(即写某些人为了利益不择手段) 两种通信模式(Ad hoc mode和Infrastracuture mode)的区别是什么? 我将会很想念他就像想念你一样 英文怎么说 不要机器翻译 他们每年都在美国举行一次汉语比赛 用英语怎么说? 英语翻译sorry,我没说清楚,是2万个英文字母,请帮忙回答下 DN1000水泥管水流量怎样计算四道排水沟1米宽,850米长,平均1.5深;问夏季能从直径1米的水泥管顺利排出吗?另求水流量计算公式? Sade leapt to fame with the ___ of her debut single Your Love Is King.(5 分)A.productionB.issueC.emissionD.release lim x趋向于无穷 (1+2x)^1/x=?,为什么 给客户的BL复印件上要有“on board”字样吗?什么时候给的BL复印件上没有 on board?我在网上看到有人这样说:This means the supplier wants you to pay 30% by tele-transfer (TT) immediately you confirm the order. Balance “就那么一瞬间,我爱上了你” 用英文怎么说? 求lim x趋向于无穷{1+(1/2x)}^-x ? DN1000管道压力为10KG1小时流量是多少 "全世界都知道我爱上了你” 用英文怎么说? 平抛运动的合速度方向为什么是不断变化的呀,对于水平方向的速度一直是水平方向的,对于竖直方向的速度也是一直朝着竖直向下的方向呀,为什么合速度时就会不断变化方向呀,合速度方向难 小孩的睡眠时间是多少 课前演讲该讲些什么呢我们每天有一个课前演讲 快到我了 该讲些什么呢 有意思点的话题 不要太无聊 最好是比较新的 轻松一点的 最好是可以引起共鸣的东西 毕竟我们是90后么 义薄云天中的薄字是什么含义 jack汉语是什么 (土旷可益垦辟,民稀可益招徕,何废郡之有?乃案视图记得汉召信臣陂渠故迹)de翻译 求小学体育优质课三、四年级说课稿内容要新颖一些,最好带课件,有的发下,没有可以指导一下也可以... 为什么我的悠悠球把绳子换成粗一点的睡眠时间就变短了?如题 什么样的课才是优质课 平抛物体运动的竖直分速度为什么是 v=gt 林书豪哈登合演19分大逆转 火箭开局中国非制造业商务活动延续升势 内需增中能降级老板赛后痛哭 圈内人:俱乐部美国称不会考虑赦免斯诺登 促其回国受日本前首相小泉坚定反核电路线 再次公日本第26号台风给伊豆大岛带来11万英国三百余名议员被指仍挪公款用于日常洛杉矶机场枪击案致航班受阻 华人伸援加同意日本引渡东京超市杀人案中国籍知阿富汗总统批美击毙巴基斯坦塔利班头目斯诺登抨击美国国家安全局为“最坏犯罪普京签署《俄联邦行政违法法典》保护文德国海关在一公寓中查获逾1500幅绘伊拉克总理访美寻求武器技术支持 防内韩国总统朴槿惠巴黎会见联合国教科文组印尼黑客袭击澳大利亚200多家网站 阿富汗总统批评美无人机炸死巴塔头目时日媒:日俄会谈 日“牵制中国”计划落法媒:孙杨为违章驾驶道歉激起中国网民中国东北三省再现“雾霾天” 多处高速南京“富二代”杀妻案今庭审 死者亲属太平人寿 全国客户服务节启动小兔“白白”回家吧!826人加分公示安利阳光计划“安全回家”让学生“越玩中俄博览会商德国际物流保税商品展29中考两天都有雨 记得带伞哈市医疗等保险缴费基数上调EMS微信扫一扫 录取通知书到哪 早确保考场周边200米无噪声招募啦快让路建桥工人“青奥形象大使” 等你来代言韩国哨所枪击案肇事士兵被抓获(组图)新华社社长李从军会见冰岛总统甘肃省将打造航空丝路线世界杯足彩让你“过足瘾”明天中考了罗浮山百草油在行动交警重点整治45处乱鸣笛路口执法人员跟踪8公里查黑车 侃价收钱
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘