在C中从命令行将字符强制转换为整数
我正在编写的这个C程序从命令行读取一组字符,并使用如下所示的数组(argv[])存储它们 这是随机垃圾在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 我选临时演员的方式有问题吗?或者我
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);
}
}