免费注册 查看新帖 |

Chinaunix

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

UE不尊重原始数据?! [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-14 15:59 |只看该作者 |倒序浏览
我们知道,0D是换行符,0A是回车符。我做了一个实验,写了一个程序在一行中插入一个0D,然后存到一个文件里面。那么cat后,输出的是0D后面的字符。而用vi打开这个文件,明显可以看到中间的一个特殊符号。这样产生的这个文件是10个字节大小的。而ftp到win下,用UE看的时候,就会看到11个字节大小的数据,中间自动加了一个0A。代码和结果如下。如果只插如0A,UE也会转化成11个字节的。如果用UE自己建立一个中间有0D 0A的文件,那么也是11字节的。难道说,UE不尊重原始的文件数据吗?????

  1. [yangwl@db2 yangwl]$ cat test.c
  2. #include <stdio.h>;

  3. int main(){
  4.         char temp[10];
  5.         int n;
  6.         FILE    *fp;
  7.         strcpy(temp,"abcdefghij");
  8.         temp[5]=13;
  9.         fp=fopen("./test.txt","w");
  10.         fwrite(temp,sizeof(char),10,fp);
  11.         fclose(fp);
  12.         exit(0);
  13. }
  14. [yangwl@db2 yangwl]$ gcc test.c
  15. [yangwl@db2 yangwl]$ ./a.out
  16. [yangwl@db2 yangwl]$ cat test.txt
  17. ghij[yangwl@db2 yangwl]$ vi test.txt

  18. abcde^Mghij
  19. ~
  20. ~
  21. ~
  22. ~
复制代码

UE1.jpg (8.16 KB, 下载次数: 23)

UE1.jpg

UE2.jpg (21.93 KB, 下载次数: 21)

UE2.jpg

论坛徽章:
0
2 [报告]
发表于 2004-07-14 17:34 |只看该作者

UE不尊重原始数据?!

并不是UE不尊重原始数据,
文件可以分为 dos,mac,unix 3种格式
你看看菜单  文件 ->; 转换
以及菜单    高级 ->; 配置 ->; 自动检测UNIX文件  自动转换UNIX文件
用你的测试文件,各个以上的配置都试试,同时用hex看看文件的内容
你会得出你自己的结论!

论坛徽章:
0
3 [报告]
发表于 2004-07-14 18:40 |只看该作者

UE不尊重原始数据?!

UE 应该不会一声不吭就把文件给转换掉的,我记得在打开文件的时候有警告,询问是否转换的。

论坛徽章:
0
4 [报告]
发表于 2004-07-14 20:23 |只看该作者

UE不尊重原始数据?!

>;>; 0D是换行符,0A是回车符

说反了。对于这些常用的控制符,最好用它们的转义字符表示,不容易弄错。如 '\n' 是换行符(0xA),'\r' 是回车符(0xD)等。

在文本文件中,正如上面 bashfulboy 指出的那样,有DOS、Unix/Linux、Mac等文件格式。文件格式其实主要是指这几种系统对于换行符的处理不同:DOS是0D0A(即通常所说的回车换行"\r\n"),Unix是0A(换行符'\n'),Mac是0D(回车符'\r')。

楼主的程序产生的恰好是符合 Mac 格式的文本文件,即中间的换行符是回车符 '\r'。如果用Unix/Linux上的 cat 命令拉查看此文件,则在输出前面的 "abcde"之后,由于遇到回车符 'r',所以光标重新回到这一行的开头,输出下面的内容,遮盖了以前输出的字符串。从表面上看,就象只输出了回车符后面的字符一样;其实不是这么一回事。

如果想使用 cat 能看到象vi那样的结果,可以这样:cat -v ./test.txt。

UE是一个可以跨系统使用的编辑器,它了解各个系统的文本文件格式。如果是其它系统使用的文本格式,它可以选择对文件进行格式转换,以方便在本系统上处理文件。

论坛徽章:
0
5 [报告]
发表于 2004-07-14 21:23 |只看该作者

UE不尊重原始数据?!

whyglinux , 强阿!

论坛徽章:
0
6 [报告]
发表于 2004-07-15 00:02 |只看该作者

UE不尊重原始数据?!

原帖由 "aero"]char temp[10 发表:
;
        int n;
        FILE    *fp;
        strcpy(temp,"abcdefghij";


越界。

论坛徽章:
0
7 [报告]
发表于 2004-07-15 08:52 |只看该作者

UE不尊重原始数据?!

原帖由 "win_hate" 发表:


越界。

  哈哈~ 职业敏感阿~

楼上两位答的真好,我之前也碰到过类似的问题的

Linux 创建的文件,放到 Windows 时,还有 Mac 文件放在 Linux 使用等等~ 都要注意不同平台的一些特性

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2004-07-15 08:53 |只看该作者

UE不尊重原始数据?!

原帖由 "bashfulboy" 发表:
并不是UE不尊重原始数据,
文件可以分为 dos,mac,unix 3种格式
你看看菜单  文件 ->; 转换
以及菜单    高级 ->; 配置 ->; 自动检测UNIX文件  自动转换UNIX文件
用你的测试文件,各个以上的配置都试试,同..........


呵呵,是这个问题了。解决了,谢谢老兄。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2004-07-15 08:59 |只看该作者

UE不尊重原始数据?!

原帖由 "whyglinux" 发表:
>;>; 0D是换行符,0A是回车符

说反了。对于这些常用的控制符,最好用它们的转义字符表示,不容易弄错。如 '\n' 是换行符(0xA),'\r' 是回车符(0xD)等。

在文本文件中,正如上面 bashfulboy 指出的那样..........


呵呵,十分感谢whyglinux老兄。真的受益匪浅。       

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2004-07-15 09:02 |只看该作者

UE不尊重原始数据?!

原帖由 "win_hate" 发表:


越界。


^_^,这个是故意的。不想要'\0',又不想自己处理。小程序,越出去不要它了,^_^。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP