一段时间以来,我一直在弄乱这个玩具代码,但是我不知道为什么它不能将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]);
答案 0 :(得分: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';
答案 1 :(得分: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\0"};
char d[] = {"4\0"};
char e[] = {"7\0"};
char n[] = {'\0'};
char *a[] = {c, d, e, n};
fun(a);
}
void fun(char *a[]){
int j = 0;
while(*a[j] != '\0'){
printf("atoi(a[%d]): %d\n", j, atoi(a[j]));
j++;
}// end of while