联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
CODE: [Copy to clipboard]sed -e "s/$/\r/" myunix.txt > mydos.txt
CODE: [Copy to clipboard]Windows/DOS与Unix文件格式之间的相互转换 2007-06-21 13:25 Windows/DOS与Unix文件格式是不同的 先搞清楚几个符号 ******************* 0A LF ^J 换行 0D CR ^M 回车 ******************* DOS/Windows文本文件中使用CR(回车\r)和 LF(换行\n), 在文件的行尾的情况是是 '\r\n' UNIX文本只使用换行符,在行的末尾有一个换行(\n),也就是'\n' 所以在windows下编辑的C程序放在unix下编译会出现"No end of newline"的Warning 两种文件格式之间的转化 Unix -> Dos '\n' -> '\r\n' ////////////////////////////////////////// while ( (ch = fgetc(in)) != EOF ) { if ( ch == '\n' ) putchar('\r'); putchar(ch); } ////////////////////////////////////////// 只要在Unix文件中出现的'\n'的之前加入一个'\r'字符就可以了 Unix <- DOS '\n' <- '\r\n' 从Dos到Unix的情况复杂点,不能只是把从文件中读出的'\r'去掉就可以了 因为Dos文件中的文本行的末尾有时会内嵌一个回车符号,这种情况在击打式打印机中出现。 所以在转换前要判断'\r'是否和'\n'同时出现。 如果同时出现,则去掉'\r' 如果没有同时出现,保留'\n' ////////////////////////////////////////// cr_flag = 0; /* No CR encountered yet */ while ( (ch = fgetc(in)) != EOF ) { if ( cr_flag && ch != '\n' ) { /* This CR did not preceed LF */ putchar('\r'); } if ( !(cr_flag = (ch == '\r')) ) putchar(ch); } //////////////////////////////////////////