【问题标题】:Unknown characters when printing text file in c [closed]在c中打印文本文件时出现未知字符[关闭]
【发布时间】:2017-11-06 09:49:57
【问题描述】:

我正在尝试在 CodeBlock 终端中使用 C 打印文本文件中的字符。我使用 getc 和 printf。但是终端也会显示不需要的字符。例如, 当我阅读时,

CAAAAATATAAAAACAGGTTTATGATATAAGGTAAAGTATGGGAGATGGGGACAAAAGT

它显示,

CΘA A A A A T A T A A A A A C A G G T T T A T G A T A T A A G GT A A A G T A T$GhGêG╝A G<AöT G@GñG<G AxC A A A A G T

谁能说明可以做些什么来避免这种情况。

【问题讨论】:

  • 显示你的代码?
  • 代码在哪里?
  • 寻求调试帮助的问题(为什么这段代码不起作用?)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建minimal reproducible example
  • 你的代码在哪里?
  • 我认为问题不在此代码中,请参阅我的答案。不过,对于此类问题,最好始终包含minimal reproducible example

标签: c file character codeblocks


【解决方案1】:

您的文本文件显然使用了 2 字节的character encoding。如果这是在 Windows 上,很可能是UTF-16

char 在 C 中是一个单字节,因此假设是单字节编码。有很多方法可以解决这个问题,例如你可以使用iconv。在 Windows 上,您可以使用 wchar_t(*) 来读取此文件的字符(以及像 getwc() 这样的宽字符函数,如果您需要 8 字节编码,像 WideCharToMultiByte() 这样的 Windows API 函数可以提供帮助。


wchar_t 是“宽”字符的类型,但它由实现定义一个宽字符有多少字节。在 Windows 上,wchar_t 有 16 位,通常包含 UTF-16 编码字符。在许多其他系统上,wchar_t 具有 32 位,通常包含 UCS-4 编码字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多