我有一串数字,例如"123456789",我需要提取它们中的每一个以在计算中使用它们.我当然可以通过索引访问每个char,但是如何将其转换为int?
我查看了atoi(),但它需要一个字符串作为参数.因此,我必须将每个char转换为字符串,然后在其上调用atoi.有没有更好的办法?
如果我想将单个数字转换为char数字值,例如,如果:
char c = '5';
而我想c坚持5而不是'5',100%便携式这样做吗?
c = c - '0';
我听说所有字符集都按顺序存储数字,所以我假设是这样,但我想知道是否有一个有组织的库函数来进行这种转换,以及它是如何按常规方式完成的.我是一个真正的初学者:)
我正在经历一些练习问题,我看到了这段代码:
#include <stdio.h>
#include <string.h>
int main(void) {
   char* s = "357";
   int sum = 0;
   int i = 0;
   for (i = 0; i < strlen(s); i++) {
     sum += s[i] - 48;
   }
   printf("Sum is %d", sum);
   return 0;
}
有人可以解释代码的作用,尤其是48部分的减法吗?
可能重复:
C中的char到int转换
我记得很久以前在一门课程中学习通过减去'0'从ASCII字符转换为int是不好的.
例如:
int converted;
char ascii = '8';
converted = ascii - '0';
为什么这被认为是一种不好的做法?是因为某些系统不使用ASCII吗?这个问题长期困扰着我.