标题: 求助.编写一个在DOS用于截取文件的程序.[自解决]
[打印本页]
作者: chenall
时间: 2009-2-14 13:27
标题: 求助.编写一个在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 ]
作者: chenall
时间: 2009-2-14 18:29
自己参考网上的资料写了一个,目前运行好像没有什么错误.不知会不会有什么其它问题.请大家帮忙看下.
#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);
}
作者: DOSforever
时间: 2009-2-15 00:52
不编程的话可以用 4DOS 的变量函数做个批处理来完成
大致如下:
1. 用 @fileopen 获得你要处理文件的句柄
2. @fileread 读取该文件的前8个字节内容
3. @fileseek 把指针移到该文件偏移8的位置
4. 再用 @fileread 根据前面获得的长度信息读取所需的中间部分内容
5. 用 @fileclose 关闭句柄
作者: chenall
时间: 2009-2-15 23:38
4DOS以前有试用过,有空再试试.看起来很强大,之前记得好像和MSDOS的批处理命令不太兼容,所以我没用.
作者: DOSforever
时间: 2009-2-15 23:54
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