用C写个控制台程序,比如CONVERT.EXE。

来源:百度知道 编辑:UC知道 时间:2024/05/05 10:56:33
大家好:
用C写个控制台程序,比如CONVERT.EXE。
这个CONVERT.EXE可以实现如下功能:
1、把指定路径下的目录的特定扩展名的文件(如*.enc),形成文件名列表filename.txt
且文件名列表的排列顺序是按照数字的升序排列
如:
00A1.ENC
00A2.ENC
01A1.ENC
01B1.ENC
01B2.ECN
...
2、对生成的文件名列表filename.txt进行字符操作,比如把filename.txt的每行前面都加上字符‘V’,字符‘.’变为‘_’,行尾加上‘;’
变为:

V00A1.ENC;
V00A2.ENC;
V01A1.ENC;
V01B1.ENC;
V01B2.ECN;
...

请大家给出实现代码,我是新手,请大家给予帮助!
阳光上的桥:
你好!谢谢你的指导!
用批处理,我已经实现了,但是我现在要对提取的文件名列表文件做比较复杂的后续处理,我认为批处理有很多地方,无法处理。因此,我想用C写,并且想学习C这种语音,我想在VC6.0上开发,请你给予指导!谢谢

阳光上的桥:
你好!
fgets(s);使用有错误,是不是要改为fgets(s,sizeof(s),stdin);
我该了上述的,也不能正确执行批处理文件。请分析!

一个DOS命令就搞定了:
for /f %f in ('dir *.ENC /b /on') do echo V%f; >>filename.txt

如果编写为批处理,注意把里面得%f都写为%%f

纯粹用C语言写这类问题是一个比较项目,有些时侯很不值得。比如完全用C写的程序完成你这个要求,需要使用FindFirst、FindNext等方法扫描某个目录下的文件清单,而由于这两个函数没有排序功能,所以你必须得自己设计数据结构存放文件清单,然后才能排序。如果文件的个数事先知道一个范围,比如不超过100个,那么可以用数组存放这些文件名清单,否则还得使用链表等数据结构。

为了程序简单,建议程序只做字符串变换部分,把获得文件清单和排序都交给批处理来做,这样命令就变为:
dir /b /on *.ENC | CONVERT.EXE > filename.txt

现在得CONVERT.C就非常简单了:
main(){
int i;
char s[256];
while(!feof(stdin)){
gets(s);
/*这里对字符串s进行变换,比如修改里面得.为_*/
i=0;while(s[i]){if (s[i]=='.') s[i]='_';i++;}
printf("V%s;\n", s);
}
}