Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 获取字符串的索引_C_String_Loops - Fatal编程技术网

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