我有一个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