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

C 将字符数组中的字符转换为整数,c,C,我的问题是:如何获取整数变量来识别存储在字符数组中的字符的值 我的问题是:我无法获取整数变量号来存储字符数组array1[]中元素表示的正确值 一些背景: 我已经编写了一个名为Celcius_to_fahrenheit的函数,它进行了一个简单的转换。它接受一个字符数组,其中包含3个存储为字符的数字,并将数组中的每个元素分配给一个名为number的整数变量。变量号可能与某个对象相乘后,将添加到浮点变量Celsium中。一旦获得摄氏度,进行简单的转换以产生华氏度,并返回华氏度 // Converts

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

我的问题是:我无法获取整数变量号来存储字符数组array1[]中元素表示的正确值

一些背景: 我已经编写了一个名为Celcius_to_fahrenheit的函数,它进行了一个简单的转换。它接受一个字符数组,其中包含3个存储为字符的数字,并将数组中的每个元素分配给一个名为number的整数变量。变量号可能与某个对象相乘后,将添加到浮点变量Celsium中。一旦获得摄氏度,进行简单的转换以产生华氏度,并返回华氏度

// 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;
}
//将Celcius转换为Tmax和Tmin的华氏温度`
浮动摄氏度至华氏度(字符阵列1[]
{
浮动华氏温度,摄氏度;
int i,数字;
摄氏度=华氏度=数值=0;
对于(i=0;i
十进制数字的
char
表示形式与数字本身不同。例如,
'4'
并不等于
4
,而是
52
。您可以通过从数组元素中减去
'0'
来更正此问题,以获得实际值,例如
number=(int)(array1[i]-'0')
十进制数字的
char
表示形式与数字本身不同。例如,
'4'
并不等于
4
,而是
52
。您可以通过从数组元素中减去
'0'
来纠正这一点,以获得实际值,例如
number=(int)(array1[i]-'0')
A
char
值只是
(.128
范围内的有符号数字。整数识别字符数组中存储的字符的值不需要进行任何转换

int i = array[n];
将为
i
提供存储在
array
n
元素中的字符值。您可以在中看到值转换。注意:为了向自己证明不需要或不需要转换,请将该值视为字符和整数:

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;
}

char
值只是
(-128
范围内的有符号数。整数识别字符数组中存储的字符的值不需要进行任何转换

int i = array[n];
将为
i
提供存储在
array
n
元素中的字符值。您可以在中看到值转换。注意:为了向自己证明不需要或不需要转换,请将该值视为字符和整数:

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;
}

如果查看ASCII表,可以看到字符的等效整数值。例如,如果您想知道字符“0”的整数值,它将是48。将char转换为int的一个简单实现是取char和-48。(或减去“0”,因为字符“0”等于48)

如果查看ASCII表,可以看到字符的等效整数值。例如,如果您想知道字符“0”的整数值,它将是48。将char转换为int的一个简单实现是取char和-48。(或减去“0”,因为字符“0”等于48)

您已经得到了几个解释如何从字符中获取数字的答案。我将为
循环提供一个更简单的
版本来累加数字

使用:


您已经得到了几个解释如何从字符中获取数字的答案。我将为循环提供一个更简单的版本来累加数字

使用:


有意义,因为“4”存储为十进制52,“0”存储为十进制48。因此,减去“4”-“0”应产生一个4的十进制数。谢谢你的帮助@Liftalots精确-设置ASCII字符,使数字0到9的表示形式相邻并按升序排列。它们还可以方便地对齐,以便最低的4位也表示数字本身,因此您还可以写入
number=(int)(array1[i]&0x0F)
。这是有意义的,因为“4”存储为十进制52,“0”存储为十进制48。因此,减去“4”-“0”应产生一个4的十进制数。谢谢你的帮助@Liftalots精确-设置ASCII字符,使数字0到9的表示形式相邻并按升序排列。它们还可以方便地对齐,以便最低的4位也表示数字本身,因此您还可以写入
number=(int)(array1[i]&0x0F)