首页 > 解决方案 > 无法使用 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]);

标签: ccastingatoi

解决方案


假设您需要将28字符分别转换为数字。您需要两个不同的数组来转换数字

char a[] = "2";
char b[] = "8";

i = atoi (a);
j = atoi (b);

如果您只想使用字符而不是字符串来转换单个数字,则更简单的方法如下

char a = '2';
char b = '8';

i = '2' - '0';
j = '2' - '0';

推荐阅读