2017-04-13 67 views
0

我的代碼如下:獲取字符串的指數

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 
+1

'cc_string'的類型? –

+1

(How)你初始化了'sum'嗎? –

+1

'int sum + =(index * 2);'.... sum'開始未初始化....在循環之前聲明它,初始化爲0,並在循環中使用它。 – LPs

回答

1

問題是您使用ASCII數字作爲數字,這是不正確的。

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

所以,你的第一個循環給你102 = '3'(0x33, 51) * 2

要簡單減法「0」解決它的ASCII數字:

index = cc_string[i] - '0'; 

顯然,在你的問題expexted輸出沒有任何意義,使第一sum6沒有,如果sum初始化爲0

因此預期輸出可以是下列加偏移初始值

6 
20 
36 
40 
56 
60 
64 
+1

大概他已經在某處初始化了'sum = 0;'。可能值得在'for'循環初始化中加入':'''好的答案。 –