从数组和程序中提取整数值而不显示printf函数

时间:2016-05-29 19:08:00

标签: c arrays integer printf atoi

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

#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使得整数指针没有强制转换

我该如何解决?

另外,当我执行这个程序时,它什么都不做,甚至不打印“引入表达式”。为什么会这样?

1 个答案:

答案 0 :(得分:0)

该警告意味着您将错误的参数传递给该函数。 &#34;的atoi&#34;期待一个chars数组作为参数,但是你在这里传递一个char作为参数:

r = atoi(expressio[i]);

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

r = expressio[i] - '0';

如果查看ascii表,你会注意到ascii值为0.如果你把48(或者像我做的那样,ascii值为0)减去你的char expressio [i],你会获取相应的数字作为整数。像这样,如果expressio [i]等于&#39; 8&#39;,那么r将等于8。