将ascii转换为int

ant*_*009 4 c

gcc 4.5.1 c89

我有一个填充了char字符的缓冲区.我需要比较它们:

这是缓冲区的示例内容:

vote buffer [ 51 ]
vote buffer [ 32 ]
vote buffer [ 49 ]
vote buffer [ 32 ]
vote buffer [ 50 ]
vote buffer [ 32 ]
vote buffer [ 53 ]
vote buffer [ 32 ]
Run Code Online (Sandbox Code Playgroud)

我试图得到缓冲区中的这些字符的int等价物进行比较.

#define NUMBER_OF_CANDIDATES 7
if((vote_data.vote_buff[i] > NUMBER_OF_CANDIDATES || vote_data.vote_buff[i] < 1) {
    /* Do something */
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,在if语句中永远不会是真的,因为范围要大得多.

我试过转换为(int).但是,这并没有解决问题.

我想我可以用ascii字符集来计算.但是,如果我无法帮助它,我宁愿不添加更多的复杂性.

非常感谢任何建议,

Sve*_*ach 5

如果您只想将单个字符转换为int,则可以使用c - '0'(相当于c - 48)。如果要转换多个字符的字符串,请使用sscanf()


小智 5

您可以使用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);

}
Run Code Online (Sandbox Code Playgroud)