C无法将char类型转换为int

  • 本文关键字:类型转换 int char c
  • 更新时间 :
  • 英文 :


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

char infix[SIZE];
gets(infix);
while(*infix){
int temp = (int) (*infix);
infix++;
}

https://pastebin.com/8NMkUQw4

正如第二条注释中所指出的,您得到的是'1'字符的ASCII值。你需要做的是这样的事情:

int temp = (int) (*infix - '0');

此外,您应该使用fgets()进行字符串输入。我无法编译您的代码,所以我做了一些小的更改。以下是我测试的内容:

#include <stdio.h>
#include <string.h>
int main() {
char infix[10];
fgets(infix, 10, stdin);
infix[strlen(infix)-1] = '';
char *pArr = infix;
while (*pArr != '') {
int temp = (int) (*pArr - '0');
printf("%dn", temp);
pArr++;
}
}

当我运行这个时,我得到了预期的输出:

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

最新更新