将带符号的char转换为c中的int

时间:2018-08-28 21:26:44

标签: c

将签名字符串转换为int时遇到问题。

char *crn1, *crn2, *credit1, credit2;
char course1, course2;

crn1=strtok(course1,"/");
credit1=strtok(NULL,"/");

crn2 = strtok(course2,"/");
credit2 = strtok(NULL,"/");

我试图将带符号的char credit1或credit2转换为整数,以便稍后在我的代码中使用数学运算。我要么得到一个巨大的数字,要么是一个错误。

1 个答案:

答案 0 :(得分:1)

使用strtol(这是atoi的安全版本)。

#include <stdlib.h>
#include <stdio.h>

int main() {
  char *str = "5";
  int n;
  n = strtol(str, NULL, 10);
  printf("n+1 is %d\n", n+1);
}

使用atoi

#include <stdlib.h>
#include <stdio.h>

int main() {
  char *str = "1";
  int n;
  n = atoi(str);
  printf("n+1 is %d\n", n+1);
}

如果您宁愿使用字符的数值,而不是将字符串中的数字转换为整数,则可以:

#include <stdio.h>

int main() {
    char c = 'a';
    printf("ascii code of %c is %hhu\n", c, c);
    printf("after %c is %c with ascii code %u", c, c+1, c+1);
    return 0;
}