换行符‘/n’和回车符‘/r’

换行符‘/n’和回车符‘/r

顾名思义,换行符就是另起一行,回车符就是回到一行的开头,所以我们平时编写文件的回车符应该确切来说叫做回车换行符  

'/n' 10 换行(newline)
'/r' 13 回车(return)


也可以表示为'/x0a'和'/x0d'.(16进制)

在windows系统下,回车换行符号是"/r/n".但是在Linux等系统下是没有"/r"符号的。

在解析文本或其他格式的文件内容时,常常要碰到判定回车换行的地方,这个时候就要注意既要判定"/r/n"又要判定"/n"。

写程序时可能得到一行,将其进行trim掉'/r',这样能得到你所需要的string了。

 

由于还是无法理解换行回车的意思特引用以下文章:

/n是换行,英文是linefeed,ASCII码是0xA。
/r是回车,英文是carriage return ,ASCII码是0xD。

如果用过机械打字机,就知道回车和换行的区别了。。。
  换行就是把滚筒卷一格,不改变水平位置。  
  回车就是把水平位置复位,不卷动滚筒。


但是我们平时按得Enter到底是回车还是换行,不太清楚??
看到一种说法:windows下enter是 /n/r,unix下是/n,mac下是/r

在MS的系统中纯文本格式按一个回车键是输入了两个字符,一个回车一个换行。在LINUX系统中则只是一个回车。
//以上内容参考了http://topic.csdn.net/t/20040617/23/3101951.html#和http://topic.csdn.net/t/20021113/09/1171659.html的讨论  

还有在编程时文件操作

wb(二进制方式)或者wt(文本方式)也会有影响。我做了个实验(实验用.net2003)
在01.txt文件中输入12然后enter,在ultraedit中看到的二进制是31 32 0d 0a

然后程序如下:

int mian()
{  FILE   *fp1,*fp2,*fp3,*fp4,*fp5,*fp6;  
 
  char a[10];
  char b[10];
  
  fp1   =   fopen("01.txt","r"); 
  fp3   =   fopen("02.txt","w");
  fread(a,sizeof(unsigned char),8,fp1);       //a里是31 32 0a
 
fwrite(a,sizeof(unsigned char),8,fp3);      //02.txt里是31 32 0d 0a  ,原因是输入的情况下,换行回车转换成换行,然后输出时换行又会转成换行回车
  fclose(fp1);
  fclose(fp3);

  fp2   =   fopen("01.txt","rb");
 
fp4   =   fopen("03.txt","wb");
  fread(b,sizeof(unsigned char),8,fp2);      //b里是31 32 0d 0a
  fwrite(b,sizeof(unsigned char),8,fp4);      //03.txt里是31 32 0d 0a ,原因是二进制情况下回车和换行的(类似文本方式的那种转换)是不存在的
 fclose(fp2);
  fclose(fp4);

  return   0; 
}
好像结论是这样的:读的方式下,在文本方式下,enter是0x0a;在二进制方式下,enter是0x0d,0x0a。

MSDN中查到这样的话:Also, in text mode, carriage return–linefeed combinations are translated into single linefeeds on input, and linefeed characters are translated to carriage return–linefeed combinations on output. (输入的情况下,换行回车转换成换行,然后输出时换行又会转成换行回车)When a Unicode stream-I/O function operates in text mode (the default), the source or destination stream is assumed to be a sequence of multibyte characters. Therefore, the Unicode stream-input functions convert multibyte characters to wide characters. For the same reason, the Unicode stream-output functions convert wide characters to multibyte characters.

Open in binary (untranslated) mode; translations involving carriage-return and linefeed characters are suppressed. (二进制情况下回车和换行的转换是不存在的).

你可能感兴趣的:(windows,linux,Stream,FP,newline,combinations)