将 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? [复制]