我想将char数组的内容复制到int变量或数组中。例如,前五个值必须转到int数组(int x):
char a[] = "123456";
我在其他线程中看到要将char更改为int,我需要这样做:
int x = a[0] - '0';
还有其他方法吗?
如果我想要两个或更多的组中的值,例如12,34和56?
,该怎么办?如果我没有将它们保存为整数,而是浮点数或其他类型,那该怎么办?
答案 0 :(得分:2)
答案 1 :(得分:1)
您正在写入轨道,但是如果您想转换为整数数组,那么您 应该使用像
这样的东西int x[MAX_ELEM];
for(int i =0; i<sizeof(a)/sizeof(char); i++)
{
x[i] = a[i] -'0';
}
对于其他情况,您需要单独处理。
答案 2 :(得分:1)
你必须做int x = a[0] - '0';
的原因是因为C中的字符编码。正在发生的是你从字符中减去编码偏移量。这是一个包含所有编码值的表:UTF-8 encodings。因此int x = a[0] - '0';
在您的情况下等同于int x = 49 - 48;
,其具有您正在寻找的正确值。使用'0'
代替0
,您使用的char值为0。
还有其他方法,但这种方式效果很好。要使用其他类型,只需在创建int
后进行类型转换。
约翰获得两位数字的方式效果很好。转贴于此处,它是number = 10 * digit1 + digit2
。
答案 3 :(得分:0)
回答你的问题:
number = 10 * digit1 + digit2
等数字构造整数。