0

I would like to copy the contents of a char array to int variables or an array. For example, the first five values have to go to an int array (int x):

char a[] = "123456";

I saw in other threads that to change a char to an int, I need to do this:

int x = a[0] - '0';

Is there other ways of doing it?

What if I wanted to the values in groups of two or more, such as 12, 34 and 56?

And what if I didn't what to save them as ints, but floats or other types instead?

4

4 回答 4

2

将适当大小的字符串部分复制到单独的缓冲区并使用strtol()or strtod()

于 2013-06-04T20:56:54.890 回答
1

你在写轨道上,但是如果你想转换成整数数组,那么你应该使用类似的东西

int x[MAX_ELEM];

for(int i =0; i<sizeof(a)/sizeof(char); i++)
{
   x[i] = a[i] -'0';
}

对于其他情况,您需要单独处理。

于 2013-06-04T21:05:43.807 回答
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

于 2013-06-04T21:08:23.570 回答
0

要回答您的问题:

  • 当然,还有其他方法可以做到这一点。您展示的方式将 ASCII 值转换为它所代表的数字,但还有其他方式。
  • 读入所需的字符数,将每个字符转换为数字,然后从这些数字构造整数,例如number = 10 * digit1 + digit2.
  • 在构造整数后进行类型转换。
于 2013-06-04T20:57:44.490 回答