[英]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
,它將不起作用。 一個轉換的溶液char
到int
是使用ASCII表:
char c = '9'
int v = c - '0'; // v == 9
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.