2014-03-19 37 views
1

我從AIX得到一個文本文件,並嘗試處理它在Windows什麼是替補角色,以及如何處理它在Windows

但有些線路包含奇怪的字符像sub character,在UltraEdit中,它顯示像arrow

當fgets函數遇到該線時,它會引起一次恐怖並停止繪圖。然後,即使我遇到線路後再強行運行fgets,它也拒絕繼續。

的字符的代碼六是圖1A

該字符在ASCII表的解釋是替代字符,其被用於替換不能在設備上表示的字符。

這是否意味着

  1. 我有AIX的一個特定的字符,也沒有辦法處理它的窗口。
  2. 這是否僅在交叉平臺文件的情況下發生?

謝謝!

+1

這只是一個ASCII控制代碼,它不應該在調用'fgets'時引起問題。這更可能是您的代碼中的一個錯誤,您應該添加到您的問題中。 –

+0

這個SUB字符(ASCII碼1A)是一個不可打印的字符,但它不應該導致fgets的問題。嘗試使用'fgetc'函數逐字讀取文件字符,並查看會發生什麼情況。 –

+2

在Windows中,0x1A通常被解釋爲文本文件的文件結束標記。如果你試圖在命令提示符中執行'輸入file.txt'命令,那麼如果文件有一個,它也會停在這個字符處。 – ach

回答

3

有幾個問題。

如果使用fopen"r"模式,文件將以文本模式打開,然後ASCII字符0x1b將被解釋爲文件結尾字符。此外,如果您的文件來自aix,則Windows結束符肯定是「\ n」(0x10),而不是「\ r \ n」(0x13 0x10),fgets僅作爲行結尾重新識別「\ r \ n」。

你需要通過角色與功能fgetc讀取文件的字符來實現自己的fgets喜歡的功能,你必須與"rb"模式,而不是"r"模式fopen的AIX文件。

您的新功能fgets的功能不應超過5或6行。

相關問題