将 atoi 与 char 一起使用

Posted

技术标签:

【中文标题】将 atoi 与 char 一起使用【英文标题】:Using atoi with char 【发布时间】:2010-05-26 18:31:42 【问题描述】:

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

我正在尝试这样做:

   char *array;

   array[0] = '1';

   int x = atoi(array);

   printf("%d",x);

【问题讨论】:

【参考方案1】:
char c = '1';
int x = c - '0';
printf("%d",x);

【讨论】:

最简单的答案,无需使用任何中间缓冲区【参考方案2】:

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

int x = myChar - '0';
printf("%d\n", x);

【讨论】:

【参考方案3】:

你需要给字符串分配内存,然后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);

【讨论】:

【参考方案4】:

怎么样:

   char arr[] = "X";
   int x;
   arr[0] = '9';
   x = atoi(arr);
   printf("%d",x);

【讨论】:

这对于单个字符来说是相当过分的。额外的变量、数组、空终止符都是不必要的。【参考方案5】:

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

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

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

【讨论】:

【参考方案6】:

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

int atoi(const char * str)

如果你打算将它与单个字符一起使用,你会得到一个segmentation fault,因为该函数会尝试读取内存,直到找到'\0'强>!

E. G。试试这个:

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

int number = atoi(string_for_atoi);

【讨论】:

以上是关于将 atoi 与 char 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 atoi() 将 char 数组的元素转换为 int? [复制]

在 C++ 中使用 atoi 将 char 数组转换为 int 值

如何使用 atoi 分配 char 数组的各个元素?

将 char 数组转换为 atoi 失败

将 char* 传递给 atoi [重复]

atoi 似乎不适用于我的程序