C无法将字符类型转换为int

C无法将字符类型转换为int,c,C,我有一个char数组,我正在通过指针迭代并试图将其转换为int,但它似乎不起作用,例如,当我有“1”时,它被转换为50,而不是仅仅1 char infix[SIZE]; gets(infix); while(*infix){ int temp = (int) (*infix); infix++; } 正如第二条评论中指出的,您得到的是'1'字符的ASCII值。您需要做的事情如下: inttemp=(int)(*中缀-'0'); 此外,您应该使用fgets()进行字符串输入。

我有一个char数组,我正在通过指针迭代并试图将其转换为int,但它似乎不起作用,例如,当我有“1”时,它被转换为50,而不是仅仅1

 char infix[SIZE];
      gets(infix);

while(*infix){
int temp = (int) (*infix);

infix++;
}

正如第二条评论中指出的,您得到的是
'1'
字符的ASCII值。您需要做的事情如下:

inttemp=(int)(*中缀-'0');
此外,您应该使用
fgets()
进行字符串输入。我无法编译你的代码,所以我做了一些小改动。以下是我测试的内容:

#包括
#包括
int main(){
字符中缀[10];
fgets(中缀,10,标准输入);
中缀[strlen(中缀)-1]='\0';
char*pArr=中缀;
而(*pArr!='\0'){
int temp=(int)(*pArr-'0');
printf(“%d\n”,temp);
pArr++;
}
}
当我运行这个时,我得到了预期的输出:

src : $ ./a.out 
123
1
2
3

永远不要使用
获取
。它甚至已经从C标准中删除了。使用例如。至于您的问题,没有现有的字符编码方案,其中
'1'==1
。您可能正在使用其中的
'1'
等于整数
49
。但是,如果您学习任何ASCII(或C规范),您将了解到所有数字都是连续编码的,这意味着您可以从任何数字字符中减去
'0'
,得到相应的整数。例如,
infix[0]-“0”
我不明白为什么要通过指针进行迭代?通过索引进行迭代有什么问题?你确定这就是你编译的代码吗<代码>中缀++你不能给数组赋值。@Someprogrammerdude谢谢你,我从你那里学到了一些新东西。不幸的是,这是我的教授给我的模板,我不能改变那个部分。如何转换为int而不是ascii表示?