目的:去掉 DOS 文本文件中的回车符号,将 DOS/Windows 格式的文本文件转换成 Unix 格式的文本文件。
风之舞原创作品,转载请注明来源。
#include
#include
#include
#include
#include
#include
#include
int main ( int argc , char **argv )
{
int ret,fp,fd;
char cs[2];
char *filebuff;
struct stat buf;
size_t filelen;
if ( stat(argv[1],&buf) == 0 )
filelen = buf.st_size ;
else
filelen = 0 ;
if ( (filebuff = malloc(sizeof(char) * filelen )) == NULL )
{
perror("Malloc memory error !\n");
exit( -1 );
}
bzero(filebuff, filelen );
if ( ( fp = open ( argv[1] ,O_RDONLY ) ) == NULL )
{
free(filebuff);
perror("This argv[1] error !\n");
exit(-1);
}
ret = 0;
while( read( fp , cs , 1) != 0 )
{
if ( cs[0] != '\015' )
{
*(filebuff+ret) = cs[0];
ret++;
}
}
close(fp);
if ( (fd = open ( argv[1] ,O_WRONLY | O_CREAT | O_TRUNC )) == NULL )
{
free(filebuff);
perror("Open File argv[1] error !\n");
exit(-1);
}
fprintf(stderr,"BUFF =[ %s ] \nFILELEN = [ %d ]\n",filebuff,ret);
write( fd , filebuff , ret );
close(fd);
free(filebuff);
exit(0);
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
以上程序代码在 SCO OpenServer 6.0 MP3 下和 RHEL AS4Up5 系统下均调试通过。
需要指出的是,以上仅仅是测试代码,稍加修改,可写成完整的 dos2unix 程序代码,当然,如果修改代码逆向操作,可以写出一个 Unix2Dos 的程序代码。
阅读(2787) | 评论(0) | 转发(0) |