将ascii转换为int

将ascii转换为int,c,C,通用条款4.5.1 c89 我有一个用字符填充的缓冲区。我需要比较一下: 这是缓冲区内容的示例: vote buffer [ 51 ] vote buffer [ 32 ] vote buffer [ 49 ] vote buffer [ 32 ] vote buffer [ 50 ] vote buffer [ 32 ] vote buffer [ 53 ] vote buffer [ 32 ] 我试图得到缓冲区中这些字符的int等价物来进行比较 #define NUMBER_OF_CAND

通用条款4.5.1 c89

我有一个用字符填充的缓冲区。我需要比较一下:

这是缓冲区内容的示例:

vote buffer [ 51 ]
vote buffer [ 32 ]
vote buffer [ 49 ]
vote buffer [ 32 ]
vote buffer [ 50 ]
vote buffer [ 32 ]
vote buffer [ 53 ]
vote buffer [ 32 ]
我试图得到缓冲区中这些字符的int等价物来进行比较

#define NUMBER_OF_CANDIDATES 7
if((vote_data.vote_buff[i] > NUMBER_OF_CANDIDATES || vote_data.vote_buff[i] < 1) {
    /* Do something */
}
#定义候选数量7
if((投票数据。投票缓冲[i]>候选人人数| |投票缓冲[i]<1){
/*做点什么*/
}
正如您所看到的,if语句中永远不会出现这种情况,因为范围要大得多

我已经试着将其转换为(int)。但是,这并没有解决问题

我想我可以从ascii字符集进行计算。但是,如果我无法控制,我宁愿不增加复杂性


非常感谢您的建议,

如果您只想将单个字符转换为
int
,您可以使用
c-'0'
(相当于
c-48
)。如果要转换多个字符的字符串,请使用标准库中没有内置的内容来将
char
转换为
int
。这是因为大多数
int
不适合于
char
。但是,有几种方法可以将字符串转换为
int
,因为这是一种错误这是更常见的方法。您可以通过将每个
char
复制到长度为2的数组的第一个元素中,第二个char为0,并将其作为
atoi()
sscanf()
strtol()
的输入来轻松使用它们(我建议在实际程序中使用最后两个字符之一,因为它们允许进行错误检查。)

char缓冲区[2]={0,0};
int i;
对于(i=0;i
使用ASCII值并减去
'0'
当然是一个可行的选择。任何合理的字符集都将按顺序排列数字


最好的方法是更改接口,这样例程就不会收到一个
char
数组,而是一个
int
数组。程序的外部接口应该负责清理输入并将其转换为易于处理的内容。目前,无法轻松更改程序以支持更多功能让输入例程存储
int
s可以解决这个问题。

您可以使用atoi将字符串转换为整数。Char和int在C中是相同的

int main (int argc, char** argv)
{
 int n=65;


 char* String;

 String="1234";


 printf("String: %s - Integer: %d\n", String, atoi(String));


 printf("int %d is char: %c\n ", n, n);

}

我不明白你的问题。当然,投票缓冲区[0]是51,大于候选人数(7)。你能更精确一点吗?51是ascii字符3。所以我需要将3与候选人数(7)进行比较。谢谢。
int main (int argc, char** argv)
{
 int n=65;


 char* String;

 String="1234";


 printf("String: %s - Integer: %d\n", String, atoi(String));


 printf("int %d is char: %c\n ", n, n);

}