我想从我在键盘中引入的数组中提取一个数字并将其转换为一个整数。我的代码是:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
    int r, t, i;
    char expressio[t];
    char vector[50];
    char rpn[t][4];

    printf("Introduce the expresssion");
    fgets(expressio, t, stdin);

    t = strlen(expressio);

    for (i = 0; i <= t; i++) {
        if (isdigit(expressio[i])) {
            r = atoi(expressio[i]);
            vector[i] = rpn[0][r];
        }
        return 0;
    }
}


我有这个警告:


  传递“ atoi”的参数1使指针从整数开始而无需强制转换


我该如何解决?

同样,当我执行该程序时,它什么也不做,甚至不打印“ Introduce the expression”。为什么会这样呢?

最佳答案

该警告表示您正在向函数传递错误的参数。 “ atoi”期望将一个char数组作为参数,但是您在此处传递了一个char作为参数:

r = atoi(expressio[i]);


如果要将单个字符转换为数字,可以执行以下操作:

r = expressio[i] - '0';


如果您查看ascii表,您会注意到0的ascii值为48。如果将48(或像我一样,将0的ascii值)减去到char expressio [i],您将得到对应的数字作为整数。这样,如果expressio [i]等于“ 8”,则r等于8。

09-06 22:22