我想从键盘中输入的数组中提取一个数字并将其转换为一个整数。我的代码是:
#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/