照一张图片

使用C库函数方式实现文件拷贝 - 简书
使用C库函数方式实现文件拷贝
n掌握C库函数对文件操作n掌握C库函数的常用函数文件访问用法内容n使用C库函数方式实现文件拷贝功能n编写程序,从待拷贝的文件中逐步读出数据到缓冲区,在把缓冲区的数据逐个写入到新创建的文件中,完成对原文件的拷贝工作n对应代码流程图。n进入实验代码目录lab9,根据下图参考代码编写filecp2.c程序$vim filecp2.c1、编写好后如下图所示:2、用gcc编译filecp2.c文件,输入命令:$gcc filecp2.c –o filecp2生成可执行文件filecp23、运行应用程序,如下图所示,将filecp2.c文件复制为test2.c,然后用diff命令比较两个文件的内容是否一样,一样则说明拷贝正确。//功能描述:该程序用C库函数方式通过从待拷贝的文件中逐步读出数据到缓冲区,再把缓冲区的数据逐个写入到新创建的文件中,完成对原文件的拷贝#include#include#include#include#define BUFFER_SIZE 1024intmain(intargc,char**argv){FILE*from_fd;FILE*to_fd;longfile_len=0;charbuffer[BUFFER_SIZE];//判断入口参数if(argc!=3){printf("Usage:%sfromfiletofile\n",argv[0]);exit(1);}//打开源文件if((from_fd=fopen(argv[1],"rb"))==NULL){printf("Open %sError\n",argv[1]);exit(1);}//创建目的文件if((to_fd=fopen(argv[2],"wb"))==NULL){printf("Open %sError\n",argv[2]);exit(1);}//测文件大小fseek(from_fd,0L,SEEK_END);file_len=ftell(from_fd);fseek(from_fd,0L,SEEK_SET);printf("form filesize is %d\n",file_len);//文件拷贝while(!feof(from_fd)){fread(buffer,BUFFER_SIZE,1,from_fd);//读文件if(BUFFER_SIZE&=file_len){fwrite(buffer,file_len,1,to_fd);}else{fwrite(buffer,BUFFER_SIZE,1,to_fd);//写文件file_len-=BUFFER_SIZE;}bzero(buffer,BUFFER_SIZE);//清空buffer}fclose(from_fd);fclose(to_fd);exit(0);}?pQn?i查看: 1523|回复: 8
.c和.h文件中的函数定义问题
主题帖子精华
高级会员, 积分 526, 距离下一级还需 474 积分
在线时间0 小时
如果我在.c文件中有如下几个函数:
void PPM_GPIO_Init(void)
void PPM_TIM_Init(u16 arr,u16 psc)
void PPM_NVIC_Init(void)
然后我在.c文件中做了这样一个函数:
void PPM_Init(u16 arr,u16 psc)
void PPM_GPIO_Init(void);
void PPM_TIM_Init(u16 arr,u16 psc);
void PPM_NVIC_Init(void);
那么我在.h文件中是直接只定义void PPM_Init(u16 arr,u16 psc);就可以么?
不需要再把上面三个函数分别列出了吧?
然后再main.c中初始化的时候也只需要写
PPM_Init(899,0);
这样就可以了,对不对呢?
另外,还有一种情况,是比如说我需要在主函数里面单独引用上面三个函数中的其中一个,假设就是PPM_TIM_Init(u16 arr,u16 psc)那么我是不是就不应该在.c中定义PPM_Init()了?而是应该在main中分别写上
void PPM_GPIO_Init(void); void PPM_TIM_Init(u16 arr,u16 psc);
void PPM_NVIC_Init(void);
主题帖子精华
金钱104017
在线时间638 小时
回复【楼主位】馨馨泡沫:
---------------------------------
楼主自己试试,编译一下就知道了。。
void&nbspPM_Init(u16&arr,u16&psc)
void&nbspPM_GPIO_Init(void);
void&nbspPM_TIM_Init(u16&arr,u16&psc);
void&nbspPM_NVIC_Init(void);
这个函数,写的这么屌,你们c语言老师知道么?
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
初级会员, 积分 69, 距离下一级还需 131 积分
在线时间0 小时
彻底跪了&真心牛&&看看c语言的书吧!
只要路对?不怕路远
主题帖子精华
中级会员, 积分 364, 距离下一级还需 136 积分
在线时间12 小时
主题帖子精华
高级会员, 积分 526, 距离下一级还需 474 积分
在线时间0 小时
回复【2楼】正点原子:
---------------------------------
回复【3楼】小布的梦:
---------------------------------
已经改正好了,没问题了,谢各位指导~
主题帖子精华
在线时间654 小时
回复【5楼】馨馨泡沫:
---------------------------------
跪了&&&楼主先去学习怎么初始化GPIO&&跟&&&设置中断分组吧
道不同,不相与为谋
主题帖子精华
在线时间263 小时
哈哈,原子哥真搞了这次,建议LZ看看C语言的书,不着急
技术交流,Sell 中颖单片机,MOS管,欢迎私信骚扰,看到第一时间回复
主题帖子精华
高级会员, 积分 526, 距离下一级还需 474 积分
在线时间0 小时
回复【6楼】jermy_z:
---------------------------------
初始化和中断分组已经写好了。我不明白这个和我怎么定义void&nbspPM_Init(void)有关系么?
void&nbspPM_GPIO_Init(void)
{
& GPIO_InitTypeDef&GPIO_InitS
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,&ENABLE);&
//????GPIO???è?±??
//PB8PM&×÷??TIM4_CH3?????????¨??
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//????????
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//I/O?±????50M
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void&nbspPM_NVIC_Init(void)
{
& NVIC_InitTypeDef&NVIC_InitS
NVIC_InitStructure.NVIC_IRQChannel=TIM4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//?è??NVIC_IRQChannel??????????????
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//?è??NVIC_IRQChannel????????????
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
我觉得我写的这个没有问题啊,不是我的问题所在吧??
主题帖子精华
中级会员, 积分 212, 距离下一级还需 288 积分
在线时间0 小时
回复【2楼】正点原子:
---------------------------------
评论笑尿
Powered by新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
稍有积蓄, 积分 283, 距离下一级还需 217 积分
论坛徽章:0
我今天做了一个程序主要是写文件
只用一次打开文件
不定期写,也许1秒写多次,也许多秒写一次
现在有个问题我如果在写的时候把文件删除了,我那个傻瓜程序竟然不报错继续写..........
我加了ferror函数也没用,于是我在每次写之前只好判断文件是不是存在了
我是这样判断的
struct stat f_
if( stat( filename, &f_stat ) == -1 )
{
& && &&&return -1;
}复制代码
不知效率怎么样应该很底因为每秒可能会写多次,这样每次都判断必然影响速度
哪个大侠能教小弟个高效的办法么?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
白手起家, 积分 59, 距离下一级还需 141 积分
论坛徽章:0
比如打开以后,就不能删文件。这样可以吗?
稍有积蓄, 积分 283, 距离下一级还需 217 积分
论坛徽章:0
恩,怎么样才能让文件打开后就不能删除呢?
小富即安, 积分 2511, 距离下一级还需 2489 积分
论坛徽章:0
但是有权限时 rm -f 还是可以删除的。
稍有积蓄, 积分 283, 距离下一级还需 217 积分
论坛徽章:0
恩~~~~~~加锁阿
还是希望各位高手能够八仙过海各显神通
给小弟讲一个自认为效率很高的判断文件是否存在的好方法
论坛徽章:1
想不通为什么要判断文件是否存在呢?
稍有积蓄, 积分 283, 距离下一级还需 217 积分
论坛徽章:0
我也想不通
我写的好好的文件为啥会有人那么混蛋非要把它删了
就这个问题我问了总设计师,他是作java的
:&这个判断是一定要有的!!!!!!!!!不然出错了怎么办????????&
然后我就只好在每次写的时候先看看文件是不是存在
那请问班主您认为这个问题怎么处理好呢?
[ 本帖最后由 lishengxu 于
09:51 编辑 ]
家境小康, 积分 1379, 距离下一级还需 621 积分
论坛徽章:0
原帖由 lishengxu 于
09:50 发表
我也想不通
我写的好好的文件为啥会有人那么混蛋非要把它删了
就这个问题我问了总设计师,他是作java的
:&这个判断是一定要有的!!!!!!!!!不然出错了怎么办????????&
然后我就只好在每 ...
为什么一定要有呢?
你的程序在unix上,系统特性允许删除已被打开的文件,不会出错,最多是已删除的文件暂时不能释放磁盘空间;
你的程序在windows上,系统特性不允许删除已被打开的文件,你也用不着判断了;
这难道不正常吗?
家境小康, 积分 1379, 距离下一级还需 621 积分
论坛徽章:0
struct stat f_
if( stat( filename, &f_stat ) == -1 )
{
& && &&&return -1;
}
/* 这里谁来保证 */
// write( filename, .... );
复制代码
即使你这样判断,但是判断结束与写文件之间的空当谁来保证文件不会被删除呢?
稍有积蓄, 积分 283, 距离下一级还需 217 积分
论坛徽章:0
恩,楼上的意思我明白.我也感觉做这个判断实在~~~~~~~~
设计者的意思就是说文件没了必须再重新打开一个继续写,不能就不管了.
但是我的系统也不报错,可以说根本就没反应,所以我只能每一次写之前判断一下啊.
至于不能保证那一部分,我也没办法了,也不能一直就判断下去啊.
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 19, 距离下一级还需 181 积分
论坛徽章:0
如何将一个文件从一个目录拷贝到另一个目录
使用什么函数,能不能举个简单的例子?
万分感谢!
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
白手起家, 积分 19, 距离下一级还需 181 积分
论坛徽章:0
高手救命!UNIX下C程序中的文件拷贝问题
难道就没有人会这个问题嘛?天哪
论坛徽章:1
高手救命!UNIX下C程序中的文件拷贝问题
天哪,居然有人问这个问题。太难了啊。
我嘴欠,还是告诉你吧,看谭老师的《C程序设计》的第13章。
白手起家, 积分 19, 距离下一级还需 181 积分
论坛徽章:0
高手救命!UNIX下C程序中的文件拷贝问题
谢谢楼上这位热心大哥
不过还是要问一下,谭老师的《C程序设计》在哪里找?
论坛徽章:1
高手救命!UNIX下C程序中的文件拷贝问题
晕,你上学用的什么教材啊?
还有,这是最基本的C语言的教材了,如果你连这书都没看过,到这里来,有点不合适。
白手起家, 积分 19, 距离下一级还需 181 积分
论坛徽章:0
高手救命!UNIX下C程序中的文件拷贝问题
不会是谭浩强老师的《C程序设计》吧,我手头也有一本,不过这上面都是文件的open,close,read,wirte。
我现在是在UNIX下把一个*.wav文件从一个目录拷贝到另外一个目录,代码里可以调用shell下的CP命令吗?
还请指教一下!
万分感谢!
大富大贵, 积分 12880, 距离下一级还需 7120 积分
论坛徽章:0
高手救命!UNIX下C程序中的文件拷贝问题
应该是大一学生吧?呵呵,书店里肯定有。
没见有人说中国软件业水平太差要谭浩强负责么?呵呵,说明他的书流传很广
论坛徽章:1
高手救命!UNIX下C程序中的文件拷贝问题
原帖由 &jackyyb& 发表:
不会是谭浩强老师的《C程序设计》吧,我手头也有一本,不过这上面都是文件的open,close,read,wirte。
我现在是在UNIX下把一个*.wav文件从一个目录拷贝到另外一个目录,代码里可以调用shell下的CP命令吗?
还请指教..........
wav不是文件吗?文件的开关读写不够用吗?
另外,可以用system函数调用cp。
白手起家, 积分 19, 距离下一级还需 181 积分
论坛徽章:0
高手救命!UNIX下C程序中的文件拷贝问题
非常感谢aero大哥的帮忙!我想应该可以搞定了。
小弟虽然学过C编程,用的不多,给大家添麻烦了!
以后还希望大家不吝赐教!
小富即安, 积分 2369, 距离下一级还需 2631 积分
论坛徽章:0
高手救命!UNIX下C程序中的文件拷贝问题
在MSDN中找这些相关的内容
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处

我要回帖

 

随机推荐