去除行尾 ^M 的方法 与 文件编码批量转换
编译:gcc -o ctrlm ctrlm.c使用:ctrlm 文件
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char * argv[])
{
char bak = {0};
char cmd1 = "mv ";
char cmd2 = "mv ";
int lch = 0;
int cch = 0;
FILE * fpw = NULL;
FILE * fpr = fopen (argv ,"r");
if(2 != argc)
{
printf ("Usage: ctrlm <filename>\n");
exit(1);
}
strcpy (bak,argv);
strcat (bak,".ctrlm");
fpw = fopen (bak,"w");
if( (!fpr) || (!fpw))
{
perror ("fopen");
exit(1);
}
lch = fgetc(fpr);
while(!feof(fpr))
{
cch = fgetc(fpr);
if( !((10 == cch) && (13 == lch)) )
{
fputc (lch,fpw);
}
lch = cch;
}
fclose (fpr);
fclose (fpw);
sprintf (cmd1,"mv %s %s.orig",argv,argv);
system(cmd1);
sprintf (cmd2,"mv %s %s",bak,argv);
system(cmd2);
return 0;
}
如果想批量的话
#!/bin/sh
for i in *
do
ctrlm $i
done
只是批量替换了
并没有删除他生成的.orig文件
再研究研究
批量转换文件编码
说明:只要把 iconv 的参数改一下就可以转换相应的编码
-f 后表示源文件编码
-t 后表示目标文件编码
#!/bin/sh
for i in *
do
iconv -f gb2312 -t utf8 $i > tmp
cp tmp $i
rm -f tmp
done
:( 传说中的C... 原帖由 主id 于 2007-3-20 13:43 发表 http://bbs.jgfree.net/images/common/back.gif
:( 传说中的C...
我也是在网上找的
不过不管是什么
好用就成
:$ 原帖由 主id 于 2007-3-20 13:43 发表 http://jgwy.net/bbs/images/common/back.gif
:( 传说中的C...
确实啊``````````````
页:
[1]