在C中从多个字符数组字段创建int值

在C中从多个字符数组字段创建int值,c,C,我正在编写一个C程序,我正在与之斗争(我被面向对象的概念给宠坏了) 我想做的是: 我想把字符数组中的值放入一个整数中。例如,我有char[0]=='1'和char[1]=='2'。我想把这些值放在一个int变量中,所以它的值是12。我试过寻找,但我不知道如何做到这一点 我真的不擅长解释,所以如果需要,请询问更多信息。如果您的字符数组由字符'1'和'2'组成: char a[2]; a[0] = '1'; a[1] = '2'; int b = (a[0]-'0')*10 + (a[1]-'0')

我正在编写一个C程序,我正在与之斗争(我被面向对象的概念给宠坏了)

我想做的是:

我想把字符数组中的值放入一个整数中。例如,我有
char[0]=='1'
char[1]=='2'
。我想把这些值放在一个int变量中,所以它的值是12。我试过寻找,但我不知道如何做到这一点


我真的不擅长解释,所以如果需要,请询问更多信息。

如果您的字符数组由字符
'1'
'2'
组成:

char a[2];
a[0] = '1';
a[1] = '2';
int b = (a[0]-'0')*10 + (a[1]-'0');

如果您的字符数组由数字
1
2
组成:

char a[2];
a[0] = 1;
a[1] = 2;
int b = a[0] * 10 + a[1];

另外,请参见:

如果字符数组包含以零结尾的字符串,则可以应用header
中声明的标准C函数
atoi

比如说

char s[] = "12";
int x = atoi( s );
int x = 0;

for ( size_t i = 0; i < sizeof( s ) / sizeof( *s ); i++ )
{
    x = 10 * x + s[i] - '0';
}
如果数组不是以零结尾,则为

char s[2] = "12";
然后可以手动将其内容转换为整数

比如说

char s[] = "12";
int x = atoi( s );
int x = 0;

for ( size_t i = 0; i < sizeof( s ) / sizeof( *s ); i++ )
{
    x = 10 * x + s[i] - '0';
}
intx=0;
对于(大小i=0;i
您尝试执行的操作称为解析。在c语言中,可以使用如下的atoi()函数完成此操作:

 char s[] = "12";
 int num = atoi(s);

你的问题表明缺乏个人研究。有很多例子可以解决这个小问题。你知道你的字符数组的大小吗?int foo=(字符数组[0]&0x0f)*10+(字符数组[0]&0x0f)。不要叫你的角色查理,我想这会有帮助的:非常感谢。这也行得通。实际上,这是一个相当简单的解决方案。不知道我怎么没想到这个。