如何将字符'1'和字符'0'转换为C中的整数10?

时间:2013-10-23 21:26:18

标签: c arrays string integer

我有一个问题,我正在尝试读取一个图像文件,在这个文件中有列和行的数量,我试图只读取这些信息来创建一个pixeis矩阵。 例如:char numb[2]; numb[0]='1'; numb[1]='0'; 我正在尝试转换为int numb = 10; 感谢

2 个答案:

答案 0 :(得分:3)

如果它总是2位数:

int n = (numb[0] - '0')*10 + (numb[1] - '0');

或者您可以声明char numb[3],以便numb[0]='1', numb[1]='0', numb[2]='\0'(基本上将其转换为以空字符结尾的字符串)并使用strtol

int n = strtol(numb, NULL, 10);

答案 1 :(得分:2)

我建议这样的事情作为开始:

if (isdigit(numb[0]) && isdigit(numb[1])) {
    int val = (numb[0] - '0') * 10 + (numb[1] - '0');
}

另一种方式是:

char str[3] = { numb[0], numb[1], '\0' };
char* enptr;
int val = strtol(str, &endptr, 10);

if (*endptr != '\0')
    /* failed to convert */ 

但它对前一种方法(在这种特殊情况下)几乎没有太大的好处