itoa函数c语言实现
时间: 2023-12-08 07:03:44 浏览: 120
itoa函数是将一个整数转换为字符串的函数,以下是C语言的实现示例:
```c
void reverse(char s[]) {
int i, j;
char c;
for (i = 0, j = strlen(s)-1; i<j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
void itoa(int n, char s[]) {
int i, sign;
if ((sign = n) < 0) /*记录符号*/
n = -n; /*使n成为正数*/
i = 0;
do { /* 生成数字*/
s[i++] = n % 10 + '0'; /*取下一个数字*/
} while ((n /= 10) > 0); /*删除该数字*/
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
```
使用示例:
```c
int num = 123;
char str[10];
itoa(num, str);
printf("转换后的字符串为:%s\n", str);
```
输出结果为:
```
转换后的字符串为:123
```
相关问题
c语言itoa函数写法实现
以下是一个简单的itoa函数实现,供参考:
```c
char* itoa(int num, char* str, int base)
{
int i = 0;
bool isNegative = false;
if (num == 0) {
str[i++] = '0';
str[i] = '\0';
return str;
}
if (num < 0 && base == 10) {
isNegative = true;
num = -num;
}
while (num != 0) {
int rem = num % base;
str[i++] = (rem > 9) ? (rem - 10) + 'a' : rem + '0';
num /= base;
}
if (isNegative) {
str[i++] = '-';
}
str[i] = '\0';
// Reverse the string
int start = 0;
int end = i - 1;
while (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
return str;
}
```
这个函数可以将一个整数转化为任意进制的字符串,例如:
```c
char buffer[20];
itoa(123, buffer, 2); // 将123转化为二进制字符串
itoa(123, buffer, 8); // 将123转化为八进制字符串
itoa(123, buffer, 10); // 将123转化为十进制字符串
itoa(123, buffer, 16); // 将123转化为十六进制字符串
```
调用结束后,buffer中存放的就是相应进制下的字符串。
用其他C语言实现itoa函数
在C语言中,`itoa` 函数通常用于将整数转换为字符串。标准库中并不提供这个函数,但你可以手动编写一个版本。这里是一个简单的非递归实现,它使用了数组来存储结果:
```c
#include <stdio.h>
#include <string.h>
char* itoa(int num, char* str, int base) {
if (num == 0) {
*str = '0';
return str + 1;
}
int sign = num < 0 ? -1 : 1;
num *= sign;
char result[21]; // 确保能容纳任意正负整数及前后的空字符
char* ptr = result + sizeof(result); // 指向数组的末尾
while (num != 0) {
int digit = num % base;
*ptr-- = digit + '0'; // 转换数字为字符并存入数组
num /= base;
}
if (sign < 0) *ptr++ = '-';
*ptr = '\0'; // 添加结束符
str += strlen(str) - ptr; // 移动指向结果字符串的指针到开始位置
return str;
}
int main() {
int num = -42;
char buffer[21];
strcpy(buffer, itoa(num, buffer, 10)); // 输出10进制
printf("The number %d in decimal is: %s\n", num, buffer);
return 0;
}
阅读全文