如何从C中没有空格的字符串中获取int?
所以我有这样一根弦:“MULTR12” 我想把'1'和'2'作为两个独立的整数。我该怎么做呢?以前,我只是简单地说:如何从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等
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不是吗