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

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

我有这个警告:

passing argument 1 of 'atoi' makes pointer from integer without a cast

如何解决?

此外,当我执行这个程序时,它什么也不做,甚至不打印“引入表达式”。为什么会发生这种情况?

最佳答案

该警告意味着您向函数传递了错误的参数。 “atoi”需要一个字符数组作为参数,但您在此处传递一个字符作为参数:

r = atoi(expressio[i]);

如果你想将单个字符转换为数字,你可以这样做:

r = expressio[i] - '0';

如果您查看 ascii 表,您会注意到 0 的 ascii 值是 48。如果您将 char expressio[i] 减去 48(或者像我一样,ascii 值 0),您将获取相应的整数数字。像这样,如果expressio[i]等于'8',那么r将等于8。

关于c - 从数组和程序中提取整数值而不显示 printf 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37513821/

相关文章:

integer - verilog IEEE 754 单精度到整数的转换

c - c中的阿姆斯特朗数程序输出错误

javascript - ReactJS:如何根据 Prop 的值(value)对对象数组进行排序?

c - 空终止与计数变量的优点

algorithm - 钳位到系列中的下一个最低值

Haskell:将 Double 类型的函数限制为仅适用于整数

c - 确定客户端绑定(bind)到的 TCP 端口号

c - 在C中使用printf()和fork()复制输出

c - strcpy 与 memcpy

java - 如何存储给定的响应(以 TextView 形式给出)并在给出响应时再次使用它们