【问题标题】:How to convert a char 2D array to int in C如何在C中将char 2D数组转换为int
【发布时间】:2021-03-15 07:19:00
【问题描述】:

我有一个名为 char newString[][] 的 char 二维数组 我想将第 2 行和第 3 行转换为整数。 假设 newString[2]= {1,2} 和 newString[3]= {2,2]} 我试图通过将我的二维数组转换为整数来获得 int n = 12 和 int m = 22。因为后来我想做 m^n(m 的 n 次方)。

     char newString[32][32];
     int n;
     int m;

  // let newString[2]= {1,2}
  // let newString[3]= {2,2}
  // convert it to an int 

     m = newString[2] - '0'; // I want m = 12
     n = newString[3] - '0';  // n = 22

我知道如果分配给整数,char - '0' 会给你一个整数,但是如何将二维数组分配给一个整数

我尝试使用这些,但它们仅适用于一维数组,有什么想法吗?

【问题讨论】:

  • 您正在寻找strtol。您尝试过的甚至不适用于一维数组,它适用于将3 之类的字符转换为3
  • 请显示 minimal reproducible example 的有效方法以及示例输入和所需输出。
  • 您没有提供 MRE。您不提供输入(即newString 的内容,并且您肯定不会期望来自未初始化的输入数组的任何内容)。你确实说你想要 12 和 22,但是基于显示的代码,根本不清楚。对于提供的样本输入,这不是所需的输出。是的,您确实说明了期望的结果,但没有任何根据,并且您没有提供我要求的其他信息。即使使用最近应用的编辑(它显示了一些您认为作为输入的内容,或者您​​想要作为输入的内容),它实际上并没有为 MRE 提供示例输入。
  • 请考虑解释显示的“输入”与预期 12 和 22 之间的关系。对我来说存在巨大差异。如果您实际上将输入与使“12”和“22”的字符一起使用,但您新显示的代码具有整数,它将(乘以 10 的幂并相加)得到所需的结果,但这是不相关的到试图将字符表示转换为数字的代码的其余部分......
  • 说真的,如果你用一维数组做了一些成功的事情,那么请显示一个minimal reproducible example。我敢打赌,代码与数组维度的不同之处更多。并且显示它也会对当前问题未提供的所有缺失声明、初始化等有很大帮助(其中一些,在编辑之后......)。请阅读How to Ask 并接受minimal reproducible example 的价值。

标签: arrays c multidimensional-array arduino


【解决方案1】:

函数:strtol() 不会执行所需的功能,因为没有尾随 NUL 字节,因此没有要转换的字符串。

建议:

// given
char newString[][] =
{
    { '1', '2'},
    { '2', '2'}
};

// convert to integers
int n = newString[0][0] - '0';
n     = n*10 + (newString[0][1] - '0');


int m = newString[1][0] - '0';
m     = m*10 + (newString[1][1] - '0');

// which results in:
// n contains 12
// m contains 22

【讨论】:

    猜你喜欢
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 2020-02-27
    • 2013-05-02
    相关资源
    最近更新 更多