c-如何连接两个类型为char的数字,并使其为int类型



本质上,我有一行以两个数字结尾。我能读这些数字,例如"4"one_answers"1"。我想将它们连接到"41"中,然后将其读取为值41的int类型。将单个字符转换为int是直接的,但对于两个(或更多(字符,这将如何工作?

我正在使用抓取字符

int first_digit = ctoi(line[1]);
int second_digit = ctoi(line[2]);

其中ctoi定义为:

int ctoi( int c ) // https://stackoverflow.com/a/2279401/12229659
{
return c - '0';
}

最简单的方法是使用sscanf这样的函数(前提是该行是适当的字符串(

int num;
if (sscanf(line, "%d", &num) != 1) {
// handle conversion error
}

尽管scanf通常不提供算术溢出保护,因此对于数,它将失败(并且您将无法跟踪它(。

strtol和朋友,当你超过范围时,会失败(并让你知道(。

然而,您可以构建自己的功能,同样没有溢出保护:

#include <ctype.h>
#include <stdlib.h>
int stringToInt(char *str) {
int num = 0;
size_t start = (*str == '-') ? 1 : 0; // handle negative numbers
for (size_t i = start; str[i] != ''; i++) {
if (isdigit((unsigned char)str[i]) == 0) { // we have a non-digit
exit(1); // ideally you should set errno to EINVAL and return or terminate
}
num = (num * 10) + (str[i] - '0');
}
return (start) ? -num : num;
}

相关内容

  • 没有找到相关文章

最新更新