【问题标题】:Getting index of string [closed]获取字符串的索引[关闭]
【发布时间】:2017-04-13 05:59:08
【问题描述】:

我的代码如下:

cc_string = "378282246310005"
for (int i = 0, n = strlen(cc_string); i < (n / 2); i++)
     {
         index = cc_string[i];
         sum += (index * 2);
         printf("%i\n", sum);
     }

但我的输出总是(字符串中的每个数字都加在一起):

102
212
324
424
536
636
736

代替:

22
38
42
50
56
56
56

【问题讨论】:

  • cc_string 的类型?
  • (如何)你初始化sum了吗?
  • int sum += (index * 2); .... sum 开始未初始化...。在循环前声明,初始化为0,并在循环内使用。
  • 取字符'1',它等于int1。换句话说'1' != 1。阅读例如this ASCII table(ASCII 是最常见的字符编码)应该对您有所帮助。
  • int sum; 应该位于'for'循环之外,并且如前所述,它应该被初始化。

标签: c string loops


【解决方案1】:

问题是您使用ASCII 数字作为数字,这是不正确的。

ASCII '1'0x31 十六进制或 49 十进制。

所以你的第一个循环给你102 = '3'(0x33, 51) * 2

要解决这个问题,只需将 '0' 减去您的 ASCII 数字:

index = cc_string[i] - '0';

显然你的问题中的expexted输出没有任何意义,因为如果sum被初始化为0,首先sum将不是6

所以预期的输出可以是下面加上sum初始值的偏移量

6
20
36
40
56
60
64

【讨论】:

  • 大概他已经在某处初始化了sum = 0;。可能值得在 for 循环初始化以及 :) 很好的答案。
猜你喜欢
  • 1970-01-01
  • 2016-07-09
  • 2018-09-23
  • 1970-01-01
  • 2020-11-17
  • 2021-07-19
  • 1970-01-01
  • 2012-06-29
  • 2011-11-21
相关资源
最近更新 更多