我的问题:如何获取整数变量来识别存储在字符数组中的字符的值?
我的问题:我无法获取整数变量号来存储由字符数组array1 []中的元素表示的正确值。
一些背景: 我编写了一个名为Celcius_to_fahrenheit的函数,它可以进行简单的转换。它需要一个字符数组,包含3个作为字符存储的数字,并将数组中的每个元素分配给一个名为number的整数变量。在可能与某个东西相乘之后,变量数被添加到浮点变量Celsius中。一旦获得摄氏温度,就会进行简单的转换以产生华氏温度,并返回华氏温度。
// Converts Celcius to Fahrenheit for Tmax and Tmin`
float Celsius_to_fahrenheit(char array1[])
{
float fahrenheit, Celsius;
int i, number;
Celsius = fahrenheit = number = 0;
for(i = 0; i < strlen(array1); i++)
{
if (i == 0)
{
number = (int)array1[i];
Celsius += (float)number * 10;
}
if (i == 1)
{
number = (int)array1[i];
Celsius += number;
}
if (i == 2)
{
number = (int)array1[i];
Celsius += (float)number * 0.10;
}
}
printf("%.1f\n", Celsius);
fahrenheit = Celsius * (9.0/5.0) + 32.0;
return fahrenheit;
}
答案 0 :(得分:4)
小数位的char
表示与数字本身不同。例如,'4'
不等于4
,而是52
。您可以通过从数组元素中减去'0'
来获得实际值,例如, number = (int)(array1[i] - '0')
。
答案 1 :(得分:1)
char
值只是(-128 < c < 127)
范围内的带符号数字。没有必要进行转换以使整数识别存储在字符数组中的字符的值。
int i = array[n];
将为i
提供nth
array
元素中存储的字符值。您可以在Ascii Table.com看到价值转化。注意:要向自己证明没有必要或必需的转换,请将值视为字符和整数:
int a = 48;
printf ("the integer value: %d, the character: %c\n", a, a);
a
的值永远不会在记忆中发生变化,这只是你所代表的问题。一个非常简单的例子是:
#include <stdio.h>
int main () {
char array[] = "this is my array.";
int i = array[3];
printf ("\n the integer value of i: %d, the character i represents: %c\n\n", i, i);
return 0;
}
<强>输出强>
$ ./bin/charint
the integer value of i: 115, the character i represents: s
答案 2 :(得分:1)
如果查看ASCII表,可以看到字符的等效整数值。例如,如果你想知道char&#39; 0&#39;的整数值,它将是48.将char转换为int的一个简单实现是取char和减去48.(或减去&#39; 0& #39;,因为char&#39; 0&#39;等于48)。
答案 3 :(得分:0)
你已经有几个答案可以解释如何从角色中获取数字。我将提出一个更简单的for
循环版本来累积数字。
使用:
int number = 0;
int len = strlen(array1);
for(i = len-1; i >= 0; --i)
{
number = number*10 + array1[i] - '0';
}
Celsius = number;