簡體   English   中英

將字符串字符轉換為int

[英]Turning a string character into an int

基本上,我有一個很長的字符串,里面充滿數字:

char *number = "insert really long number";

現在,我想對該字符串中包含的各個數字執行數學運算,讓我們說以下內容(將這個字符串又稱為字符數組中的兩個連續數字求和):

sum = number[i] + number[i+1];

但是,這不會產生正確的結果,它將返回垃圾值。 我知道如何使用printf提取單個值,例如:

printf("%c", number[i]);

但是,如何才能將此%c用於上述計算? 我嘗試使用atoi ,但出現“錯誤:指針轉換不兼容的整數,將'char'傳遞給類型'const char *'的參數;使用&作為地址。

1) atoi接受字符串而不是單個字符

2)如果您只想轉換一個ACSII char 0-9,只需使用以下代碼:

if(rChar >= '0' && rChar <= '9')
    val = rChar - '0';

您可能想要這樣:

 char *number = "123";

 int n = 0;
 char c;
 for (int i = 0; c = number[i]; i++)
 {
   n += number[i] - '0';
 }

 printf("n = %d\n", n);

對於表示為數據類型char的任何數字,您可以從'0'中減去該數字以整數形式獲取該數字。

例如:

char a = '5';
int num = a - '0';
//num will store 5

為什么這樣有效?

因為如果您檢查ASCII值“ 5”,則為53,對於“ 0”,則為48。因此相差為5。這將可以將字符形式的任何數字轉換為整數。

ASCII值“ 0”為48,“ 1”為49,依此類推。 因此,減去“ 0”會導致我們得到ASCII值的差異。

這是ASCII值的鏈接: http : //www.asciitable.com/

atoi將字符串( const char* )轉換為int ,如果給它一個char ,它將不起作用。 一個轉換的溶液charint是使用ASCII表:

char c = '9'
int v = c - '0'; // v == 9

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM