[英]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.