复制字符数组的值并初始化为整数? [复制]

Posted

技术标签:

【中文标题】复制字符数组的值并初始化为整数? [复制]【英文标题】:Copy value of character array and initialize to integer? [duplicate] 【发布时间】:2021-12-02 08:08:05 【问题描述】:

我正在尝试做的事情: 我有一个字符数组,看起来像“vm1”。我想设置一个整数变量,等于数组最后一个元素的值,在这种情况下为 1。我不需要任何花哨的东西,因为在我的情况下数组的长度将始终为 3。

我的代码:

char *string = "vm1";
int number = (int)string[2];

printf("Character from string: %c", string[2]);
printf("Number: %d", number);

输出:

Character from string: 1
Number: 55

出了什么问题: 由于某种原因,这个数字总是一些不正确的值。 55 就是来自这个案例。我尝试的另一种方法是使用sscanf,但它会产生类似的结果。

【问题讨论】:

如果一直是个位数,可以string[2]-'0' 【参考方案1】:

您必须将字符的 ASCII 值转换为实际的十进制数。为此,您必须使用:

int number = string[2];
number = number - '0';

这是为什么呢?如果你搜索一个 ASCII 表,你会发现字符 '1' 对应一个十进制值 49,所以如果你减去'0' (48) 的 ASCII 值,你会得到正确的十进制结果,1。

【讨论】:

以上是关于复制字符数组的值并初始化为整数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥这种语法专门用于初始化字符串文字而不能用于字符数组? [复制]

类字符串是不是总是被初始化为空? [复制]

将字节数组初始化为某个值,而不是默认的null? [复制]

PHP:数组到字符串?将键/值对数组放入简单的值列表中? [复制]

如何将 3 位整数格式化为 4 位字符串? [复制]

在 C++ 中复制字符串数组