C语言环境问题

7

我有一些问题,但是我无法在任何地方找到明确的答案。

基本上,我知道什么是locale,我知道如何使用(设置)它,但我不知道的是:

  1. 在幕后它是如何工作的,我很想了解。当我使用IO函数(比如说scanf do float)时,需要决定国家使用小数点还是逗号(实际上我来自于以逗号为小数分隔符的国家:)

  2. scanf函数是否“查看”当前locale?

  3. 但如果我没有在我的代码中设置它,它会默认创建一些标准的locale,还是从操作系统中获得?例如,在获取控制台的stdout、stderr和stdin的代码部分中?


1
如果你找不到答案,那么怎么知道这是一个简单的问题呢? - Sebastian Mach
1
因为我相信有很多优秀的程序员可以帮助我。现在很少有人关心系统、语言等内部细节,但这难道不是最有趣的事情吗? :) - B.Gen.Jack.O.Neill
当然是让每个人都能找到他们最感兴趣的东西 :) 只是我认为,除非真正了解它/她/他,否则无法确定某些东西是否简单 ;) - Sebastian Mach
1
但是,仅仅是一个快速的离题,即使对于一个人来说似乎很简单,但对另一个人来说可能很难 :) - B.Gen.Jack.O.Neill
我想表达的是,可能是这样,也可能是那样 ;) - Sebastian Mach
1个回答

5
默认情况下,您的程序将使用“C”本地化设置。
当您运行“setlocale(LC_ALL,“”);”时,您将从外部环境设置本地化设置(或者您可以仅设置部分“LC_*”)。
通过调用“setlocale(LC_ALL,“specific_locale”);”,您将设置特定的本地化设置。
所有I/O函数应遵循当前的本地化设置(标准C I/O函数)。
底层代码的行为取决于您正在使用的操作系统和编译器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接