【发布时间】:2018-09-22 18:33:00
【问题描述】:
我遇到了一个非常具体的问题,但在其他地方没有找到解决方案。我正在做一个小项目,我想通过允许用户使用逗号或点输入价格来使其更加健壮。所以我做了一个小功能,让我可以做到这一点:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main () {
setlocale(LC_ALL, "Portuguese");
float val;
char str[20];
scanf("%s", str);
for (int i = 0; str[i] != '\0'; ++i)
if (str[i] == ',')
str[i] = '.';
val = atof(str);
printf("String value = %s, Float value = %f\n", str, val);
return(0);
}
如果我不是葡萄牙人,这将按预期工作。由于我们主要在十进制数字中使用逗号,因此使用 atof 函数不起作用,因为它会转换为带点的浮点数,然后当我尝试使用 printf 浮点数时,它将显示 0.0 但如果您删除该行setlocale(LC_ALL, "Portuguese"); 它会工作得很好。有什么想法吗?
【问题讨论】:
标签: c localization comma