我想从键盘中引入的数组中提取一个数字并将其转换为一个整数。我的代码是:
#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使得整数指针没有强制转换
我该如何解决?
另外,当我执行这个程序时,它什么都不做,甚至不打印“引入表达式”。为什么会这样?
答案 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。