无法使用 atoi() 将字符数转换为 int

Can't cast char number to int with atoi()

我弄乱这个玩具代码有一段时间了,但我不明白为什么它不会将 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);
}

它 returns 这个错误: new.c:在函数“乐趣”中: new.c:25:22: 警告:传递‘atoi’的参数 1 使指针来自整数而不进行强制转换 [-Wint-conversion] int i = 2 * atoi(a[0]);

假设您需要将 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';

更好地表示 char *argv[] 中实际发生的情况 和一个功能齐全的代码!

#include <stdio.h> 

void fun(char *a[]);

int main(int argc, char *argv[]) {
// assume command line input was:
// ./a.out 10 11
printf("argc: %d\n", argc);
printf("argv[0]: %s\n", argv[0]);
printf("argv[1]: %s\n", argv[1]);
printf("argv[2]: %s\n", argv[2]);
printf("argv[argc]: %s\n", argv[argc]);
printf("\n");

char c[] = {"10[=10=]"};
char d[] = {"4[=10=]"};
char e[] = {"7[=10=]"};
char n[] = {'[=10=]'};
char *a[] = {c, d, e, n};

fun(a);

}

void fun(char *a[]){
int j = 0;

while(*a[j] != '[=10=]'){
    printf("atoi(a[%d]): %d\n", j, atoi(a[j]));
    j++;
}// end of while