c - 无法使用 atoi() 将字符数转换为 int
问题描述
我一直在搞乱这个玩具代码,但我不明白为什么它不会将 char 号转换为 int。谁可以给我解释一下这个?
谢谢,
#include <stdio.h>
void fun(char a[]);
int main(int argc, char *argv[]) {
char b[] = {'2','8'};
fun(b);
}
void fun(char a[]){
int i = 2 * atoi(a[0]);
int j = 2 * atoi(a[1]);
printf("this is i: %d, this is j: %d\n", i, j);
}
它返回此错误:new.c:在函数'fun'中:new.c:25:22:警告:传递'atoi'的参数1使指针从整数而不进行强制转换[-Wint-conversion] int i = 2 * atoi(a[0]);
解决方案
假设您需要将2
和8
字符分别转换为数字。您需要两个不同的数组来转换数字
char a[] = "2";
char b[] = "8";
i = atoi (a);
j = atoi (b);
如果您只想使用字符而不是字符串来转换单个数字,则更简单的方法如下
char a = '2';
char b = '8';
i = '2' - '0';
j = '2' - '0';
推荐阅读
- javascript - 延迟显示和隐藏表格中的行
- javascript - 如何将 JavaScript 变量作为属性存储在对象内部
- css - 没有伪元素的 div 动画
- java - Fxml 需要获得与它所在的 fxml 相同的控制器
- wpf - PowerShell 在事件中更新 WPF 窗口
- android - 如何知道回收站视图在 23 版之前的 api 中是向上还是向下滚动
- javascript - 删除引用的 JS 对象中的属性
- python - 熊猫从两个不同形状的数据框中确定交点
- c++ - 指向具有 decltype 的函数的指针向量
- javascript - 有没有办法在 Closure 编译器中启用死代码消除而不重命名?