姜运涛 发表于 2007 年 3 月 20 日 13:38:41

去除行尾 ^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

主id 发表于 2007 年 3 月 20 日 13:43:28

:( 传说中的C...

姜运涛 发表于 2007 年 3 月 20 日 13:44:27

原帖由 主id 于 2007-3-20 13:43 发表 http://bbs.jgfree.net/images/common/back.gif
:( 传说中的C...
我也是在网上找的
不过不管是什么
好用就成

:$

suming 发表于 2007 年 3 月 20 日 13:49:42

原帖由 主id 于 2007-3-20 13:43 发表 http://jgwy.net/bbs/images/common/back.gif
:( 传说中的C...
确实啊``````````````
页: [1]
查看完整版本: 去除行尾 ^M 的方法 与 文件编码批量转换