8

有没有办法在C中将char转换为字符串?

我正在尝试这样做:

   char *array;

   array[0] = '1';

   int x = atoi(array);

   printf("%d",x);
4

6 回答 6

30
char c = '1';
int x = c - '0';
printf("%d",x);
于 2010-05-26T18:47:47.177 回答
7

如果您尝试将数字 char 转换为 int,只需使用字符算术减去 ASCII 码:

int x = myChar - '0';
printf("%d\n", x);
于 2010-05-26T18:47:02.667 回答
5

您需要为字符串分配内存,然后 null 终止。

char *array;

array = malloc(2);
array[0] = '1';
array[1] = '\0';

int x = atoi(array);

printf("%d",x);

或者,更简单:

char array[10];

array = "1";

int x = atoi(array);

printf("%d",x);
于 2010-05-26T18:46:53.813 回答
4

怎么样:

   char arr[] = "X";
   int x;
   arr[0] = '9';
   x = atoi(arr);
   printf("%d",x);
于 2010-05-26T18:51:06.233 回答
2

您可以通过以下方式将字符转换为字符串:

char string[2];
string[0] = '1';
string[1] = 0;

字符串以 NUL 字符结尾,其值为 0。

于 2010-05-26T18:48:21.217 回答
0

atoi 函数的声明是(它等待一个“字符串”):

int atoi(const char * str)

如果您打算将它与单个字符一起使用,则会出现分段错误,因为该函数会尝试读取内存,直到找到'\0'

例如。试试这个:

char char_digit = '5';
char string_for_atoi[2] = { char_digit, '\0' };

int number = atoi(string_for_atoi);
于 2021-05-18T12:27:30.037 回答