C 获取字符串的索引
我的代码如下:C 获取字符串的索引,c,string,loops,C,String,Loops,我的代码如下: 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); } 而不是: 22 38 42 50 56 56 56 问题是您使用的是ASCII数字作为数字,
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);
}
而不是:
22
38
42
50
56
56
56
问题是您使用的是
ASCII
数字作为数字,这是不正确的
ASCII'1'
是0x31
Hex或49
decimal
因此,您的第一个循环将为您提供102='3'(0x33,51)*2
要修复此问题,只需将ASCII数字减去“0”:
index = cc_string[i] - '0';
显然,您问题中的expexted输出没有任何意义,因为如果sum
初始化为0
因此,预期输出可以是以下值加上sum
init值的偏移量
6
20
36
40
56
60
64
cc_字符串的类型
?(如何)初始化sum
?int sum+=(索引*2)代码><代码>总和
开始未初始化。。。。在循环之前声明它,初始化为0,并在循环内部使用它。取字符'1'
,它不等于int
值1
。换句话说,'1'!=1
。例如,阅读(ASCII是最常见的字符编码)应该对您有所帮助。int sum
应该位于'for'循环之外,并且,如前所述,应该初始化它代码>某处。可能值得将其包含在循环初始化中(以及:)
好答案。
6
20
36
40
56
60
64