oracle 文件写 n r,文本模式读写文件中\r和\n的问题
DOS文件(windows格式文件)中,按一下ENTER就是輸入了\r\n,這就是回車換行
MAC文件里,用\r換行
UNIX文件里,用\n換行
自己嘗試了一些\r \n的組合,歸納了下規律:
windows下用文本方式寫文件時
緩沖區里的\n或者\r都會被自動替換為\r\n寫入文件,即使是連著的\r\n,也會被替換成\r\n\r\n(但是msdn上面只說\r被替換為\r\n,我的前面一篇博文里有原文)
windows下用文本方式讀文件時
文件中的\r\n自動替換為\n存放到緩沖區里(這點和msdn是符合的,前面的博文里有原文)
\r不會被替換
假設要讀取的文件流長度小于緩沖區長度
如果用fread文本模式讀文件,\r\n被替換為\n讀進緩存區里
如果是fgets文本模式讀文件,碰到第一個\n(這里的\r和\n都是指經過轉換后讀入緩沖區的,即\r\n被替換為\n)后停止讀取,緩存區里存放的是\n之前的字符串(包括這個\n以及之前所有的\r)
fread和fwrite的返回值問題
文本模式寫文件時,\n或\r自動替換成\r\n,但是fwrite的返回值里還是算寫了一個字符(和msdn符合,前面一篇博文有原文)
文本模式讀文件時,\r\n被自動替換為\n,但是也算是讀了一個字符(和msdn的不一樣,msdn是說算讀了2個,前面的博文里有原文)
如果用UltraEdit打開文本文件有時候會碰到詢問你是否要轉換為DOS文件,其實就是回車換行符的問題了。做了如下表的嘗試,但是規律不太好總結啊。
要寫入的字符
實際寫入的字符(即\n被替換為\r\n后)
Ultraedit轉換為DOS格式后的文件內的實際字符
\r
\r
\r\n
\n
\r\n
未提示轉換為DOS文件
\r\n
\r\r\n
\r\n
\n\r
\r\n\r
未提示轉換為DOS文件
\n\r\n
\r\n\r\r\n
\r\n\r\n
\n\r\n\r
\r\n\r\r\n\r
\r\n\r\n
\n\r\n\n\r
\r\n\r\r\n\r\n\r
\r\n\r\n\r\n\r\n
\r\r\n\n
\r\r\r\n\r\n
\r\n\r\n\r\n
\r\r\r\n\r\n
\r\r\r\r\n\r\r\n
\r\n\r\n\r\n\r\n
\n\r\r
\r\n\r\r
\r\n\r\n\r\n
\n\r\r\r\r
\r\n\r\r\r\r
\r\n\r\n\r\n\r\n\r\n
總結
以上是生活随笔為你收集整理的oracle 文件写 n r,文本模式读写文件中\r和\n的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB观察系统响应,基于MATLA
- 下一篇: oracle中的柱状图,详解Oracle