将字符数组中的字符转换为整数

时间:2015-04-24 03:05:14

标签: c

我的问题:如何获取整数变量来识别存储在字符数组中的字符的值?

我的问题:我无法获取整数变量号来存储由字符数组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;
}

4 个答案:

答案 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;