无法使用 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]);
假设您需要将 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';
更好地表示 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
我弄乱这个玩具代码有一段时间了,但我不明白为什么它不会将 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]);
假设您需要将 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';
更好地表示 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