在C中从命令行将字符强制转换为整数

在C中从命令行将字符强制转换为整数,c,casting,C,Casting,我正在编写的这个C程序从命令行读取一组字符,并使用如下所示的数组(argv[])存储它们 这是随机垃圾 this is char 0 ; -4195956 this is char 1 ; -4195950 this is char 2 ; -4195948 this is char 3 ; -4195946 this is char 4 ; -4195944 this is char 5 ; -4195942 我选临时演员的方式有问题吗?或者我

我正在编写的这个C程序从命令行读取一组字符,并使用如下所示的数组(argv[])存储它们

这是随机垃圾

    this is char 0 ; -4195956
    this is char 1 ; -4195950
    this is char 2 ; -4195948
    this is char 3 ; -4195946
    this is char 4 ; -4195944
    this is char 5 ; -4195942

我选临时演员的方式有问题吗?或者我只是把指针的概念(在*argv[]中)弄错了?

argv[I]-只是指向C字符串的指针;您需要第一个元素:

temp = argv[i][0] - '0';
temp = argv[i][0] - '0';

argv
的每个元素都是一个字符串,而不是一个特定的字符
argv
是一个多维数组,您只对第一个维度进行索引。您需要获取每个嵌套数组的第一个(第零个)元素:

argv
是指向char的指针数组。因此,
argv[X]
是指向char的指针(对于合适的X)。因此,
argv[X]-某个积分值是指针算术,并返回一个指针(如果定义了减法)

要访问第一个元素,您需要
argv[X][0]


请注意,
argv[0]
不是第一个参数,而是(通常)程序名。参数开始于argv[1]
对于数字,您可以使用函数
atoi(str)
,如下所示:

temp = atoi(argv[i]);
代码:

for (i = 0 ; i<argc; i++){
    if (argv[i][0] < '0' || argv[i][0] > '9')
        printf("Operator = %s\n", argv[i]);
    else {
        temp = atoi(argv[i]);
        printf("this is char %d ; %d\n",i, temp);
    }
}
for(i=0;i'9')
printf(“运算符=%s\n”,argv[i]);
否则{
温度=atoi(argv[i]);
printf(“这是字符%d;%d\n”,i,temp);
}
}
您可以使用单独的字符数组来存储运算符

char *argv[]
temp = atoi(argv[i]);
for (i = 0 ; i<argc; i++){
    if (argv[i][0] < '0' || argv[i][0] > '9')
        printf("Operator = %s\n", argv[i]);
    else {
        temp = atoi(argv[i]);
        printf("this is char %d ; %d\n",i, temp);
    }
}