繁体   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