免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 22916 | 回复: 41
打印 上一主题 下一主题

[C] 怎么判断是Windows/dos文本文件还是Linux/Unix文本文件? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-19 10:59 |只看该作者 |倒序浏览
如题,有没有简便方法?

论坛徽章:
0
2 [报告]
发表于 2008-03-19 11:01 |只看该作者
file命令

论坛徽章:
0
3 [报告]
发表于 2008-03-19 11:06 |只看该作者
原帖由 cugb_cat 于 2008-3-19 11:01 发表
file命令


小声地问一下,file可以用来显示文件类型,但是可以用来区别是WIN文件还是LINUX文件吗?

论坛徽章:
0
4 [报告]
发表于 2008-03-19 11:09 |只看该作者
原帖由 LinuxKen 于 2008-3-19 11:06 发表


小声地问一下,file可以用来显示文件类型,但是可以用来区别是WIN文件还是LINUX文件吗?
  1. 新建 文本文档.txt: ASCII text, with CRLF line terminators
复制代码

这是在win下创建的文本文件,CRLF line terminators已经可以说明是win文本文件了。

论坛徽章:
0
5 [报告]
发表于 2008-03-19 11:52 |只看该作者
想不通,MS的盖茨为什么要在行末的换行符('\n')前加回车符('\r')?
现在想判断一个文本文件是该次的还是Linus的 .............

??????????

论坛徽章:
0
6 [报告]
发表于 2008-03-19 12:26 |只看该作者
和UNIX学的. 但为避免学的太象了,所以变化一点.

比如\ 是学UNIX /的. DOS2.X版本的还保留了FCB, 这是一种非UNIX的用填表读取文件的愚蠢方法.
比如,换行的符号
比如...  你们还可以找出来.

原帖由 pzz68 于 2008-3-19 11:52 发表
想不通,MS的盖茨为什么要在行末的换行符('\n')前加回车符('\r')?
现在想判断一个文本文件是该次的还是Linus的 .............

??????????

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
7 [报告]
发表于 2008-03-19 13:04 |只看该作者

回复 #5 pzz68 的帖子

最开始的打字机就是一行打印完毕,先复位到该行的开始,即return, '\r'
然后再换行打印,即'\n'

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2008-03-19 13:05 |只看该作者
原帖由 思一克 于 2008-3-19 12:26 发表
和UNIX学的. 但为避免学的太象了,所以变化一点.

瞧你这话说的,未变有点儿只见 unix/linux 不见森林的感觉。
我认为 CRLF 这种方式更加遵循 ASCII 编码。
不知你搞过 curses 编程没有,它就是和 DOS/WINDOWS 一样做法的。
类似的还有 LFCR(HAL9000 和别的一些系统在用)。

还有一个比较有说服力的证据就是,RFC 822 规定的 Internet Message Format 可就是以 CRLF 作为换行符的。
遵循 RFC 822 的协议实在是太多了,HTTP/SMTP/POP/FTP 等等都是我们现在 internet 上最常见的服务。
不知道你对 qmail 有了解麽,如同许多开源软件一样,qmail 就偏执地“严格遵循”CRLF 这个格式,
因此如果你用 SMTP 向 qmail 发信时,信件结尾是 LF dot LF 而不是 CRLF dot CRLF,那么 qmail 就会拒绝此信。
而 qmail 可是世界上最流行的开源 mail 服务器,它这么做也算为标准尽了一份力。

[ 本帖最后由 flw 于 2008-3-19 13:07 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2008-03-19 13:06 |只看该作者
原帖由 Godbach 于 2008-3-19 13:04 发表
最开始的打字机就是一行打印完毕,先复位到该行的开始,即return, '\r'
然后再换行打印,即'\n'

你这个说法不够严谨。
严谨的说法是,CR 和 LF,而不是 \r 和 \n。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2008-03-19 13:12 |只看该作者
同样的,dos/windows 下 fopen 里的文本模式/二进制模式的区别,也是遵循 ANSI 标准的,
同样的问题也存在于 FTP 及其派生系中,相信这个问题很多人都碰到过。

因此我说楼上把 \r \n 和 CR LF 混淆是不严谨的,正是因为,
ANSI 规定,\n 在文本模式下是逻辑新行符,读写时可根据平台和物理存储之间进行转换,
比如 windows 下写 \n 就把它转换成 CRLF(是不是 mac 就会转换成 LF?我没有用过,不清楚),
而读出 CRLF 时就会把它自动转换成 \n。

[ 本帖最后由 flw 于 2008-3-19 13:15 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP