中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 求助.编写一个在DOS用于截取文件的程序.[自解决]
作者:
标题: 求助.编写一个在DOS用于截取文件的程序.[自解决] 上一主题 | 下一主题
chenall
银牌会员




积分 1276
发帖 469
注册 2002-12-23
来自 福建泉州
状态 离线
『楼 主』:  求助.编写一个在DOS用于截取文件的程序.[自解决]

需要一个这样的程序.
文件格式.
1-8字节 一个长度信息.
中间部分 一些数据内容(长度刚好等于前8个字节所代表的值).
后面部份 多余的.

现在想利用编程实现截取中间部份.
比如程序名为GETFILE.EXE,文件,MYFILE.BIN
执行
GETFILE.EXE myfile.bin
后得到的myfile.bin就是中间部份.

我不会编程(只看得懂一些),希望论坛里懂得的朋友帮下忙.

[ Last edited by chenall on 2009-2-15 at 23:37 ]



QQ:366840202
http://chenall.net
2009-2-14 13:27
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (366840202)  编辑帖子  回复  引用回复
chenall
银牌会员




积分 1276
发帖 469
注册 2002-12-23
来自 福建泉州
状态 离线
『第 2 楼』:  

自己参考网上的资料写了一个,目前运行好像没有什么错误.不知会不会有什么其它问题.请大家帮忙看下.
#include<stdio.h>
main(int argc, char *argv[])
{
        FILE *fp1, *fp2;
        char *buf[4096];
        unsigned long long filemax;
        if (argc != 3)
        {
                printf("err!");
                exit(1);
        }
        if ((fp1 = fopen(argv[1], "rb")) == NULL)
        {
                printf("Cannot open file:%s", argv[1]);
                exit(1);
        }
        if ((fp2 = fopen(argv[2], "wb")) == NULL)
        {
                printf("Cannot open file:%s", argv[2]);
                exit(1);
        }
        fread(&filemax, 8, 1, fp1);
        while (filemax > 4096)
        {
                fread(&buf, 4096, 1, fp1);
                fwrite(&buf, 4096, 1, fp2);
                filemax -= 4096;
        }
        fread(&buf, filemax, 1, fp1);
        fwrite(&buf, filemax, 1, fp2);
        fclose(fp1);fclose(fp2);
        exit(0);
}




QQ:366840202
http://chenall.net
2009-2-14 18:29
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (366840202)  编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 3 楼』:  

不编程的话可以用 4DOS 的变量函数做个批处理来完成

大致如下:

1. 用 @fileopen 获得你要处理文件的句柄
2. @fileread 读取该文件的前8个字节内容
3. @fileseek 把指针移到该文件偏移8的位置
4. 再用 @fileread 根据前面获得的长度信息读取所需的中间部分内容
5. 用 @fileclose 关闭句柄



DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2009-2-15 00:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chenall
银牌会员




积分 1276
发帖 469
注册 2002-12-23
来自 福建泉州
状态 离线
『第 4 楼』:  

4DOS以前有试用过,有空再试试.看起来很强大,之前记得好像和MSDOS的批处理命令不太兼容,所以我没用.



QQ:366840202
http://chenall.net
2009-2-15 23:38
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (366840202)  编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 5 楼』:  

4DOS 和 MS-DOS 的 COMMAND.COM 完全兼容,可以说大部分 DOS 的 COMMAND 命令都是它的子集。

  Quote:
4DOS与传统的COMMAND.COM相比变化确实很大,但它并不是改变了COMMAND.COM原有的语法和参数,而是在它的基础上加以扩充,你也可以完全按照使用COMMAND.COM的习惯来使用它,原来在COMMAND.COM下编写的BATCH可以不加任何修改地在4DOS下运行

http://www.cn-dos.net/forum/viewthread.php?tid=15214#pid91455



DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2009-2-15 23:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: