如何从C中没有空格的字符串中获取int?

如何从C中没有空格的字符串中获取int?,c,string,int,C,String,Int,所以我有这样一根弦:“MULTR12” 我想把'1'和'2'作为两个独立的整数。我该怎么做呢?以前,我只是简单地说: char *string = "MULTR12"; val = string[5]; 但是我得到了一个非常奇怪的val值,而不是我想要的1。有人能帮忙吗?谢谢 这是如何将字符转换为int int x = string[5] - '0'; 这里有一些解释。。每个字符在内存中都表示为ASCII字符,A将是65和simliar。这也适用于数字,因此ASCII中的0是48,1是49等

所以我有这样一根弦:“MULTR12”

我想把'1'和'2'作为两个独立的整数。我该怎么做呢?以前,我只是简单地说:

char *string = "MULTR12";
val = string[5];

但是我得到了一个非常奇怪的val值,而不是我想要的1。有人能帮忙吗?谢谢

这是如何将
字符
转换为
int

int x = string[5] - '0';
这里有一些解释。。每个字符在内存中都表示为ASCII字符,
A
将是
65
和simliar。这也适用于数字,因此ASCII中的
0
48
1
49

现在,当我们从任何数字的ASCII表示中减去
0
。假设数字是
5
,这就是我们实际正在做的

int x = 53 - 48

它将
5
作为一个整数。换句话说,我们正在计算ASCII表示法与
0
的ASCII表示法的位移。

您可以这样做:

int num = string[ 5 ] - '0';
有点老套,但试试看

val = string[5] - '0';
无耻地从


您在上面尝试做的,基本上是获取字符“1”的ASCII表示,并将其转换为int,得到49。(可能不是您所期望的)

实际上您得到了一个奇怪的值,因为您试图更改一个固定字符串的值。 首先将一个新数组作为char str[]=“Multr12”;
现在您可以访问str[5]…试试这个

我仍然会遇到与奇怪输出相同的问题。我想得到1,但我输出了49。您是否错过了
0
“基本上采用字符
'1'
”的ASCII表示形式-不一定是ASCII。是的,但我正在寻找一种快速总结的方法。在当今的Unicode世界中,ASCII不是吗